Я хотел бы создать ярлык для некоторого каталога, который я могу использовать в консоли 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>

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

1 ответ1

2

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

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

Например, в эту папку можно поместить файл .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 для: Изменить каталог избранных. :) Но любое имя подойдет, конечно.

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