2013-09-12 14:49:06 +0000 2013-09-12 14:49:06 +0000
53
53
Advertisement

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

Advertisement

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

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

… и я хотел бы иметь в каждой папке ярлык из дочерних папок “New Files”, в дочернюю папку “Tested Files”. Но эта папка может время от времени перемещаться, что приведет к разрыву указанных ярлыков.

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

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

Advertisement

Ответы (8)

53
53
53
2013-09-12 15:08:36 +0000

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

В основном она создает ярлык “explorer.exe” с параметром вашего относительного пути правой кнопкой мыши (так же, как вы создаете обычный ярлык).

Конечно, вы можете сделать это вручную.
В вашем примере вы бы создали ярлык в “New Files\Tools” на

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

Вы можете использовать для этого обычное контекстное меню “New/Create shortcut” Windows и ввести вышеприведенную команду в поле “Type the location of the item” (Введите местоположение элемента).

31
31
31
2013-09-12 15:45:43 +0000

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


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

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

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

7
Advertisement
7
7
2014-05-12 01:21:58 +0000

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

Я могу передавать аргументы моему скрипту bat и т.д., это круто. Убедитесь, что аргумент /c ставится после cmd.exe.

6
6
6
2016-08-18 16:47:41 +0000

Этот трюк работает : 0x2 и 0x2 и %COMSPEC% /C start “ваше имя exe без пути” 0x2 и 0x2 и пример 0x2 и 0x2 и %COMSPEC% /C start winmine.exe

4
Advertisement
4
4
2016-08-30 08:19:38 +0000

Вы можете использовать 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

Ввод команды

xcopy /b /e container container2

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

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

Переключатель /b скопирует Symbolic links вместо того, чтобы преобразовывать их в папки. (Обратите внимание, что /b имеет совершенно другое значение для команды copy).

1
1
1
2015-09-26 02:33:10 +0000

Ярлык может записать его местоположение в переменной и вызвать команду с помощью переменной. Например, создайте ярлык “Grandparent” с целью:

%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
Advertisement
1
1
2016-01-01 08:42:40 +0000

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

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

0
0
0
2019-06-20 16:48:10 +0000

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

Пример:

  • Переменная окружения:

  • Shortcut Target:

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

Похожие вопросы

3
19
10
28
6
Advertisement
Advertisement