Windows 控制台的目录快捷方式

Windows 控制台的目录快捷方式

我想创建一个某个目录的快捷方式我可以在 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

符号链接的工作方式并非如此。

您想要做的事情不是直接可行的,但您可以使用类似的方法。

例如,您可以将 .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:更改目录收藏夹。:) 但当然任何名字都可以。

相关内容