命令在cmd.exe中工作,但不在*.bat文件中工作

命令在cmd.exe中工作,但不在*.bat文件中工作,cmd,path,Cmd,Path,我想从windows上的path系统变量中找到可执行文件的路径,并将其分配给变量。(unix“which”命令) 当我打开cmd.exe并键入: for %i in (cmd.exe) do @set cmdPath=%~$PATH:i 它可以工作(我使用“echo%cmdPath%”测试它) 但当我将这一行复制到.bat文件时,它在执行过程中抛出了一个错误“~$PATH:我在这一刻不被期望” 我不知道为什么,如何修复它?请阅读文档(键入帮助以获取或键入以获取/?) 要在批处理程序中使用FOR

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

当我打开cmd.exe并键入:

for %i in (cmd.exe) do @set cmdPath=%~$PATH:i
它可以工作(我使用“echo%cmdPath%”测试它)

但当我将这一行复制到.bat文件时,它在执行过程中抛出了一个错误“~$PATH:我在这一刻不被期望”

我不知道为什么,如何修复它?

请阅读文档(键入
帮助以获取
或键入
以获取/?

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

在批处理文件中,只需将百分比加倍

for %%i in (cmd.exe) do set cmdPath=%%~$PATH:i
请注意,
%COMSPEC%
应该已经拥有cmd.exe的完整路径

请阅读文档(键入
帮助获取
或键入
获取/?

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

在批处理文件中,只需将百分比加倍

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

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

谢谢您的完整回答。cmd.exe只是一个例子(notepad.exe更好)。我正在寻找cmake.exe路径。谢谢您的完整答案。cmd.exe只是一个例子(notepad.exe更好)。我正在寻找cmake.exe路径。