【问题标题】:How do I get my Windows7 symlink to execute from command line?如何让我的 Windows7 符号链接从命令行执行?
【发布时间】:2015-08-19 14:25:20
【问题描述】:

我有几个要经常使用的批处理文件,所以我决定将它们作为符号链接放入路径中的二进制文件夹中。我的想法是我会像使用任何其他命令一样使用它们,而不必更改目录。例如。

> odbimport -u User -f filename 

其中 odbimport 是我到批处理文件 odbimport.bat 的符号链接。

我用来制作符号链接的过程如下:

C:\Users\user>mklink C:\utils\odbimport C:\util-files\odbimport.bat
symbolic link created for C:\utils\odbimport <<===>> C:\util-files\odbimport.bat

C:\Users\user>path
Path=C:\....;C:\utils\

C:\Users\user>where odbimport
C:\utils\odbimport

据我所见,似乎我已经创建了符号链接,并且路径知道在哪里可以找到它。

但是,在我创建了符号链接并尝试执行之后,我得到:

C:\Users\user> odbimport -u me -f somefile
'odbimport' is not recognized as an internal or external command,
operable program or batch file. "

我一直在寻找这个问题的答案,但没有成功。我发现的一切似乎更多地涉及如何创建有效的符号链接,而不是解决我的问题。我找到的最接近的是this。这本质上是我的问题,除了有点倒退,因为我真的不想从 Windows 资源管理器运行符号链接。我还尝试将 .LNK 添加到我的 PATHEXT 变量中,如this question

【问题讨论】:

    标签: windows batch-file cmd path symlink


    【解决方案1】:

    .bat 扩展名添加到您创建的符号链接中,因为在Windows 上需要.bat 扩展名来告诉系统它实际上是一个可执行的批处理文件。您仍然可以仅通过键入文件名来运行该文件。

    mklink C:\utils\odbimport.bat C:\util-files\odbimport.bat
    

    当源和目标位于同一卷上时,可以使用 NTSF 硬链接,其优点是可以从 Windows 资源管理器中执行此类克隆,这与符号链接不同:

    • mklink /h C:\utils\odbimport.bat C:\util-files\odbimport.bat
    • fsutil hardlink create C:\utils\odbimport.bat C:\util-files\odbimport.bat

    【讨论】:

    • 如果我要将 .bat 扩展名添加到我的符号链接,那么我必须调用“odbimport.bat”而不是“odbimport”对吗?虽然这看起来不太漂亮,但如果这意味着我可以在任何目录中调用“odbimport.bat”并让它工作,那么这将是一个解决方案。我会对其进行测试并回复您。
    • 看起来这仍然不能解决我的问题。我的步骤: 1. 将符号链接制作成“odbimport.bat” 2. 重新检查的路径有要查看的文件夹位置,并且“where”返回我的符号链接的正确位置。 3. 在原始位置以外的文件夹中调用“odbimport.bat”。尝试失败,出现错误“系统无法打开指定文件的设备”。我想知道这是否是访问权限问题。
    • 1.与 Windows 上的 *nix 不同,.bat 扩展名需要告诉系统它实际上是一个可执行的批处理文件。要调用它,您不必指定扩展名。 2. 尝试使用不同的文件夹和新的 .bat 文件,该文件仅包含 echo OK 之类的原始文件 3. 是的,确保卷是 NTFS。
    • 我没有意识到我可以调用 .bat 而无需告诉系统扩展名。这实际上是个好消息,回首往事也很有意义。那一点知识导致了我的解决方案。看来我需要硬链接,而不是将 mklink 默认为软链接。当我在 Windows 资源管理器中查看符号链接时,我注意到即使使用 .bat 扩展名,它也表示该文件是符号链接文件。我猜 Windows 命令行不会运行软链接,即使它们指向 .bat 文件。
    • Windows 7 命令提示符运行默认模式下创建的符号链接,我已经测试过了。
    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多