Windows CMD:如何创建可执行文件的符号链接?

Nat*_*ace 9 windows shell

我的目标是在我的PATH中添加一些可执行文件(例如,chrome),以便我可以调用

> chrome
Run Code Online (Sandbox Code Playgroud)

从命令提示符,它将启动Chrome.

我知道我可以将Chrome包含的目录添加到我的路径(set PATH=%PATH%<chrome_path_here>;)中,但由于我想添加一些可执行文件,我宁愿创建一个新的bin目录,其中包含指向实际可执行文件的符号链接,只需将该目录添加到我自己的路.

Chrome可执行文件位于

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
Run Code Online (Sandbox Code Playgroud)

所以我试过了

> mklink chrome.exe "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
Run Code Online (Sandbox Code Playgroud)

这成功地为文件创建了一个符号链接(在输出中说明,并在检查时> dir).我知道我的PATH设置正确,b/c运行时> where chrome它找到了我的新符号链接.

但是,当我尝试使用我的新链接执行chrome时,没有任何反应.应该会出现一个新的空窗口,但没有任何反应.命令提示符中没有任何错误消息.

我究竟做错了什么?我是否误解了Windows中的符号链接?这是我一直在Linux中使用的方法,但我是Windows Cmd的新手.

谢谢!

Ale*_*kov 9

大多数程序不会从安装位置以外的位置运行 - 这正是您尝试从符号链接运行时所发生的情况.

在该文件夹中创建具有匹配名称的CMD/BAT文件会更容易,这些文件将从您想要的位置启动程序:

REM chrome.cmd
start /b cmd /c "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %*
Run Code Online (Sandbox Code Playgroud)

  • 另一种选择是快捷方式,但您需要将.lnk添加到PATHEXT变量中. (5认同)
  • 如果您将 @echo off 添加到 CMD/BAT 的开头,则文件中的命令在您执行时不会被回显。 (2认同)

COD*_*EaD 5

在Windows 7中,我确认符号链接不起作用,只是在原始问题中报告时被忽略.

正如哈利在他的评论中所述,快捷方式确实有效,而且对于我想要在CMD下启用的每个新命令编写单独的脚本,对我来说更简单,更容易.

他声明您需要将.lnk添加到PATHEXT变量才能执行此操作.我确认这确实有效,并且.lnk添加到PATHEXT我只需输入快捷方式的名称部分即可运行命令.例如,如果我的快捷方式名为"sublime.lnk"而PATHEXT包含.lnk,则可以使用简单命令"sublime"执行链接.太好了!

作为替代方案,我发现如果我只是在我的CMD提示符下输入快捷方式的全名,包括.lnk,则无需修改PATHEXT.例如,我在%HOMEPATH%/ bin下创建了一个名为"sublime.lnk"的快捷方式,指向"C:\ Program Files\Sublime Text 2\sublime_text.exe".

现在通过在我的%PATH%中放置%HOMEPATH%\ bin,我可以通过命令"sublime.lnk"升华.

上述任何一种方法都是我所知道的从CMD提示中访问来自Windows文件系统的各种命令的最佳方式.我不是Windows专家,欢迎更好或更标准化的解决方案来解决这个问题.


PS:我刚刚找到了你需要确保以这种方式使用的任何快捷方式的"开始于:"属性的方法,或者你的程序不会从你调用快捷方式的目录中启动.


PPS:与此相关的,我发现了如何在你的CMD会话记录的目录中运行Windows资源管理器(或它的替代)start ..