【问题标题】:Command works in cmd.exe, but not in *.bat file命令在 cmd.exe 中有效,但在 *.bat 文件中无效
【发布时间】:2013-01-31 14:17:21
【问题描述】:

我想从 Windows 上的路径系统变量中找到可执行文件的路径并将其分配给变量。 (unix 'which' 命令)

当我打开 cmd.exe 并输入:

for %i in (cmd.exe) do @set cmdPath=%~$PATH:i

它有效(我用'echo %cmdPath%'测试它)

但是当我将此行复制到 .bat 文件时,它会在执行过程中抛出一个错误“~$PATH:i is not expected in this moment”

我不知道为什么,如何解决?

【问题讨论】:

    标签: cmd path


    【解决方案1】:

    阅读 FOR 文档(输入 help forfor /?)。

    要在批处理程序中使用 FOR 命令,请指定 %%variable % 变量。变量名区分大小写,因此 %i 不同 来自 %I。

    在批处理文件中,您只需要将百分比翻倍。

    for %%i in (cmd.exe) do set cmdPath=%%~$PATH:i
    

    请注意,%COMSPEC% 应该已经包含 cmd.exe 的完整路径

    【讨论】:

    • 感谢您的完整回答。 cmd.exe 只是一个例子(notepad.exe 会更好)。我正在寻找 cmake.exe 路径。
    猜你喜欢
    • 1970-01-01
    • 2013-08-14
    • 2015-03-16
    • 2021-11-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2019-07-30
    相关资源
    最近更新 更多