【问题标题】:Windows CMD: How to create symbolic link to executable file?Windows CMD:如何创建指向可执行文件的符号链接?
【发布时间】:2012-12-28 16:20:06
【问题描述】:

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

> chrome

从命令提示符开始,它将启动 Chrome。

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

Chrome 可执行文件位于

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

所以我尝试了

> mklink chrome.exe "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"

这成功地为文件创建了一个符号链接(在输出中这样说,并在使用> dir 进行检查时)。我知道我的 PATH 设置正确,当我运行 > where chrome 时,它会找到我的新符号链接。

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

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

谢谢!

【问题讨论】:

    标签: windows shell


    【解决方案1】:

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

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

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

    【讨论】:

    • 酷,感谢您的信息!我将该代码放入一个名为“chrome.bat”的文件中,现在它可以工作了
    • 另一种选择是快捷方式,但您需要将 .lnk 添加到 PATHEXT 变量中。
    • 如果您在 CMD/BAT 的开头添加 @echo off,则执行时不会回显文件中的命令。
    • “大多数程序不会从安装位置以外的地方运行”是一个大胆的声明。有很多独立的可执行文件可以从你复制/链接到的任何位置运行。
    【解决方案2】:

    在 Windows 7 中,我确认 符号链接不起作用,正如原始问题中所报告的那样,它们只是被忽略了。

    正如Harry 在他的评论中所说,快捷方式确实有效,而且对我来说,比为我想在 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”。

    现在通过将 %HOMEPATH%\bin 放在我的 %PATH% 中,我可以通过命令“sublime.lnk”运行 sublime。

    以上任何一种方法都是我所知道的从 CMD 提示符访问 Windows 文件系统周围的各种命令的最佳方法。虽然我不是 Windows 专家,但我欢迎更好或更标准化的解决方案来解决这个问题。


    PS:我刚刚发现您需要确保以这种方式使用的任何快捷方式的“开始于:”属性被清空,否则您的程序将不会在您调用快捷方式的目录中启动.


    P.P.S.:在相关说明中,我发现了如何在您的 CMD 会话登录到的目录上运行 Windows Explorer(或其替代品):start .

    【讨论】:

    • 2 个问题:(1) 这种方法是否允许切换到命令? (2) 使用这种方法有什么注意事项吗? ...奇怪的是,对我来说,在 Windows 10 版本 2004 上,将符号链接添加到我的 bin 文件夹中的 exe 似乎有效。也就是说,我可以将 exe 作为不带扩展名的命令运行(终端可识别),但我收到有关缺少模块和内容的投诉,如果我通过完整路径运行 exe,我不会得到这些。
    • @Henrik,感谢您的关注。正如我在回答中所说,我不是 Windows 专家。因此,请谨慎应用我的观察。我发现命令行选项 do 使用这种方法工作。我只是猜测,但怀疑如果命令通过符号链接表现不同,它可能会从命令行中提取其执行路径并使用该信息来定位其他组件(如您所说的“模块和东西”)。
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2018-10-21
    相关资源
    最近更新 更多