命令在cmd.exe中有效,但在* .bat文件中无效

时间:2013-02-15 15:07:44

标签: path cmd which

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

当我打开cmd.exe并输入:

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

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

但是当我将这一行复制到.bat文件时,它会在执行过程中向我抛出一个错误“〜$ PATH:我在这个时刻没有预料到”

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

1 个答案:

答案 0 :(得分:1)

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

  

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

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

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

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