我想创建一个某个目录的快捷方式我可以在 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:更改目录收藏夹。:) 但当然任何名字都可以。