Использование относительных путей для ярлыков Windows


49

У меня есть схема папок, как (сильно упрощенная версия):

New Files
 >Tools
 >Scripts
Tested Files
 >Tools
 >Scripts

... и я хотел бы иметь ярлык в каждой папке от дочерних папок "Новые файлы" до дочерней папки "Проверенные файлы". Но эта папка может время от времени перемещаться, что приведет к поломке указанных ярлыков.

Есть ли способ сделать относительный ярлык для каждой папки? Я помню, как делал это в HTML, где вы могли задать путь, что-то вроде того, .../Filesчтобы вернуться к родителю, а затем в новую папку, но я не уверен, что это что-то поддерживает в ярлыках Windows?

PS: случай аналогичных относительных ярлыков, когда целью является файл, рассматривается в https://stackoverflow.com/questions/1169556/making-a-windows-shortcut-start-relative-to-where-the- папка-есть . В данном случае целью является папка.


1
Вы пробовали ../Filesс двумя точками? У меня не работает Windows, но я думаю, что она может работать.
— Брайан З.

1
Это первое, что я попробовал, спасибо. :(
— Гэри Моррис,


@ sancho.s - AFAIK, ответы там работают только для выполнения .bat файлов. Здесь нужен способ ссылки на папку.
— ToolmakerSteve

@ToolmakerSteve - я думаю, что вы проверяли / читали "ответы там" только поверхностно. Одним из них ( stackoverflow.com/a/1751350/2707864 ) является принятое здесь решение, которое является ок. На 4 года старше. Я не пробовал это. Другой ( stackoverflow.com/a/29261618/2707864 ) является второй половиной принятого решения здесь. Вы даже прокомментировали это. Я попробовал это, и это работает. Не обязательно быть внимательным, чтобы оставить комментарий, но нужно стараться не вводить читателей в заблуждение.
— sancho.s Восстановить Монику

Ответы:


50

Вы можете использовать эту утилиту: Относительный .

По сути, он создает ярлык для «explorer.exe» с параметром вашего относительного пути с помощью щелчка правой кнопкой мыши (так же, как вы создаете обычный ярлык).

Конечно, вы можете сделать это вручную.
В вашем примере вы бы создали ярлык в «Новые файлы \ Инструменты» для

%windir%\explorer.exe "..\..\Tested Files\Tools"

Для этого вы можете использовать обычное контекстное меню «Создать / Создать ярлык» Windows и ввести указанную выше команду в поле «Введите местоположение элемента».


Я читал об этом во время моего предыдущего исследования, но я надеялся на собственное решение в Explorer. Это будет мой резервный план, ура.
— Гэри Моррис,

Кстати, этот относительный путь останется неизменным и между системами? Или мне понадобится установить Relative, если я перемещу папки / содержимое между разными системами?
— Гэри Моррис

3
«Относительный» делает ярлык только с использованием стандартного «% windir% \ explorer.exe», поэтому вам не нужен Относительный в другой системе. Это было бы то же самое, что печатать %windir%\explorer.exeперед относительным путем при создании стандартного ярлыка. Так что, если вы сделаете это вручную, вам вообще не понадобится Relative. (Вам просто нужно запомнить команду до вашего относительного пути)
— Рик

Ах, извините, я неправильно понял эту часть вашего первого ответа, мой плохой! Спасибо!
— Гэри Моррис

2
Ручное решение здесь не работает для меня из коробки. Кроме того, я должен изменить «Start In» с %windir%пустым.
— notan3xit

30

Одним из возможных решений является использование однострочного пакетного файла вместо ярлыка, чтобы открыть все, что вы хотели открыть. Пакетный файл позволит вам использовать относительные пути внутри себя и будет иметь рабочий каталог, в котором находится пакетный файл.


Другой вариант - cmd.exeвместо этого запустить ярлык с того, что вы запускаете, а затем передать в качестве аргумента все, что вы запускаете.cmd.exe

введите описание изображения здесь

%COMSPEC%является переменной окружения точки к командной строке по умолчанию .

/C заставляет консоль закрываться после выполнения команды.


Большое спасибо! Это сработало для меня. Я часами пытался заставить свой ярлык выполнить скрипт power-shell в той же директории.
— Шервин

Полезно для другой ситуации, однако вопрос не в том, чтобы открыть какой-либо файл; речь идет о возможности перехода к указанной папке в проводнике Windows. Есть ли способ адаптировать этот ответ для этого?
— ToolmakerSteve

7

Этот трюк работает:

% COMSPEC% / C запускает "ваше exe-имя без пути"

пример

% COMSPEC% / C запускает winmine.exe


2
Пожалуйста, внимательно прочитайте вопрос. Ваш ответ не отвечает на оригинальный вопрос.
— ДэвидПостилл

1
Для Win10 1607 это решение отлично отвечает на вопрос ОП, цель: %COMSPEC% /C "start GoogleChromePortable.exe -enableextensions -incognito"начать с: [оставить пустым]
— semtex41

@ semtex41 А? Я стараюсь , что, и в результате диалоговое окно ошибки говоря «Windows не может найти„GoogleChromePortable“Какое это имеет отношение к цели OP о навигации Проводника Windows в указанную папку.?
— ToolmakerSteve

@ToolmakerSteve хорошо, заголовок «Использование относительных путей для ярлыков Windows», и я способствовал ранее предоставленному ответу. И цель OP на самом деле сделать пути динамическими, а не статичными. Так как мой ответ - то, как я создал ярлык, который выполняется по нестатическому пути, я считаю, что мой ответ подходит.
— semtex41

@ semtex41- Заявленная цель OP - ".. ярлык .. к дочерней папке" Tested Files "". Если вы не объясняете , как иметь этот ответ осуществить это, то просьба уточнить , что вы были добавление к ответу. Похоже, вы только что дали другой пример того, как выполнить файл .exe. Но ответ уже показал такой пример. Поэтому, пожалуйста, переформулируйте точку, которую вы указывали?
— ToolmakerSteve

6

Я использую аналогичное решение в шаблоне, который запускает мою среду веб-разработки (откройте каталог проекта, откройте браузер, запустите WAMP, запустите SCSS ...)

введите описание изображения здесь

Я могу передать аргументы моему сценарию летучей мыши и т. Д., Это круто. Не забудьте поставить /cаргумент послеcmd.exe


2

Вы можете использовать mklink . Это позволяет создавать символические ссылки, жесткие ссылки и ссылки в каталогах.

 mklink /d Tools "..\Tested Files\Tools"  (elevated command prompt)

Если нет повышенного доступа, вы можете использовать / J

 mklink /j Tools "..\Tested Files\Tools"

Для перемещения по всей структуре вы должны использовать команду xcopy . Например, если вся структура находится под контейнером :

container
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

ввод команды

 copy /b /e container container2

создаст следующую структуру:

container2
   New Files
      <SYMLINKD> Scripts [..\Tested Files\Scripts]
      <SYMLINKD> Tools  [ ..\Tested Files\Tools]
   Tested Files    
      Scripts
      Tools

Ключ / b будет копировать символические ссылки, а не конвертировать их в папки.


Но будет ли эта ссылка правильной, если набор папок будет перемещен в другое место?
— ToolmakerSteve

Для этого требуются привилегии, которых у меня нет, хотя похоже, что это сработает ... Не могли бы вы опубликовать изображение полученных свойств ярлыка после его создания?
— sancho.s Восстановить Монику

Ссылки действительно верны. Это можно подтвердить командой "dir". Проблема заключается в том, что действия «копировать-вставить», «переместить» и «скопировать» в диспетчере файлов разрушат структуру. Я изменил ответ, чтобы включить обходной путь.
— Краусс

1

Ярлык может записать его местоположение в переменной и вызвать команду, используя переменную. Например, создайте ярлык «Дедушка» с целью:

%windir%\system32\cmd.exe /c set HERE="%CD%" && "C:\Here.bat"

Создайте командный файл «C: \ Here.bat» в одну строку:

@%windir%\explorer.exe /n,/select, %HERE%

Теперь, независимо от того, в какой папке находится Grandparent, при нажатии на нее открывается родительская папка родительской папки. Он даже работает с дедушкой в ​​корневом каталоге.

Ваш пакетный файл мог использовать% HERE% при запуске чего-то другого, кроме explorer.exe. Или вместо Here.bat после && в целевом ярлыке вы можете вызвать программу, которая использует% HERE%.

В моей системе дедушка работает с & или &&.


1
&&выполняет следующий вызов только в том случае, если предыдущий вызов не вернул ошибку, хотя &это не имеет значения. В этом случае не должно быть никакой разницы.
— leewz

1

Если вы оставите 'Start In'поле пустым в свойствах ярлыка, ссылки будут относительно текущего рабочего каталога.

Смотрите также https://stackoverflow.com/a/17951772/40961


Как это помогает цели OP по перемещению Проводника Windows в указанную папку?
— ToolmakerSteve

Если у вас возникла проблема, то решение имеет смысл ... как ваш комментарий помогает при каждом ответе?
— Дэвид д'Э Фрейтас

0

Вы можете создать переменную среды, которая содержит (относительный) путь к целевой папке или папке над ней в структуре файловой системы.

Пример:

  • Переменная среды:

    % Dropbox% = "C: \ Users \ Пользователь 1 \ Dropbox"

  • Ярлык Цель:

    "% Dropbox% \ Install \ Utilities \ file.exe"

Вы можете использовать команду DOS SETX для создания переменных окружения.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.