Ярлык каталога для консоли Windows

362
Dawid Ferenczy

Я хотел бы создать ярлык для некоторого каталога, который я могу использовать в консоли Windows с cdкомандой. Поэтому я создаю символическую ссылку на каталог:

mklink /D link_name c:\some\path 

/Dдля символической ссылки каталога (по умолчанию - символическая ссылка файла )

Допустим, я создал ссылку link_nameв домашней директории моего пользователя: c:\Users\user\link_name.

Затем я могу использовать эту ссылку с cdкомандой:

c:\Users\user> cd link_name c:\Users\user\link_name> 

Единственная проблема - в результате путь. Мне просто нужно, чтобы полученный путь совпадал с целью символической ссылки, т.е. c:\some\pathиз моего примера, но это c:\Users\user\link_nameвместо этого.

Таким образом, символьная ссылка на каталог является скорее псевдонимом каталога, чем ярлыком .

Что мне нужно:

c:\Users\user> cd link_name c:\some\path> cd .. c:\some> 

Как на самом деле работает символическая ссылка каталога :

c:\Users\user> cd link_name c:\Users\user\link_name> cd .. c:\Users\user> 

Есть ли способ добиться того, что мне нужно? Я предпочитаю некоторый объект файловой системы, чем определение переменной среды и т. Д.

0

1 ответ на вопрос

2
LPChip

Это не то, как работает символическая ссылка.

То, что вы хотите сделать, не представляется возможным напрямую, но есть методы, которые вы можете использовать, которые похожи.

Например, в эту папку можно поместить файл .cmd, который изменит папку на новую, а затем ввести имя файла .cmd, чтобы перейти в другую папку. Если вы храните этот файл .cmd в папке, которая также указана в переменной среды% PATH%, вы можете ввести имя этого cmd в любом месте, чтобы перенаправить его в эту новую папку.

.Cmd будет просто содержать команду cd. Пример:

::cd_link_name.cmd cd /d c:\some\path 

Недостатком является то, что ни одна программа не перейдет по этой ссылке.

Если вы хотите, чтобы программа следовала по ссылке, вам действительно нужен mklink для создания соединения, и да, это будет означать, что для системы виртуальная папка, кажется, находится в месте соединения, но она действительно перенаправляет. Там просто нет возможности обойти это.

Тем не менее, если ваша цель состоит в том, чтобы просто иметь возможность быстро перемещаться по избранным папкам из командной строки, рассмотрите возможность записи глобального пакетного файла, который вы храните в месте, указанном в% PATH%, и позвольте этому изменить папку для вас.

Примером такого cmd-файла будет:

:: cdf.cmd @echo off  :: lets see if the first parameter is recognized. If so, change folder. :: note, you can't use spaces in these identifiers, but you can keep them :: short and to the point.  :: c forwards to c:\ if "%1"=="c" cd /d c:\  :: desk forwards to your Desktop folder if "%1"=="desk" cd /d %USERPROFILE%\desktop  ::docs forwards to your My Documents folder  if "%1"=="docs" cd /d %USERPROFILE%\Documents  ::a1 forwards to e:\some\path\special if "%1"=="a1" cd /d e:\some\path\special 

и так далее....

Вы можете сделать это:

C:\Windows\System32>cdf a1  E:\Some\Path\Special>cdf desk  C:\Users\Username\Desktop>_ 

Кстати, я назвал его cdf для: Изменить каталог избранных. :) Но любое имя подойдет, конечно.

Если передан аргумент с двойными кавычками или другой регистр, вы всегда должны использовать `if / i"% ~ 1 "== ...` LotPings 6 лет назад 1