45

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

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- папка-есть. В данном случае целью является папка.

7 ответов7

46

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

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

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

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

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

26

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


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

%COMSPEC% - это переменная среды, указывающая на командную строку по умолчанию.

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

6

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

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

4

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

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

пример

% COMSPEC% /C запускает winmine.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 будет копировать символические ссылки вместо того, чтобы преобразовывать их в папки.

1

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

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

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%.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .