Windows批处理:如何搜索可执行文件的路径并存储在变量中?
我有以下脚本,它应该搜索变量的路径并将其存储在变量中:Windows批处理:如何搜索可执行文件的路径并存储在变量中?,windows,batch-file,cmd,Windows,Batch File,Cmd,我有以下脚本,它应该搜索变量的路径并将其存储在变量中: FOR %%i IN (app.exe) DO ( SET app=%%~$PATH:i ECHO %app% ) 但是echo的输出是空的,不管我是在for循环内部还是外部进行echo。我缺少什么?如果要打印括号范围内的结果,需要: setlocal enableDelayedExpansion FOR %%i IN (app.exe) DO ( SET "app=%%~$PATH:i" ECHO !
FOR %%i IN (app.exe) DO (
SET app=%%~$PATH:i
ECHO %app%
)
但是echo的输出是空的,不管我是在for循环内部还是外部进行echo。我缺少什么?如果要打印括号范围内的结果,需要:
setlocal enableDelayedExpansion
FOR %%i IN (app.exe) DO (
SET "app=%%~$PATH:i"
ECHO !app!
)
您还可以使用where
:
我明白了,不知怎的,我设法从我的系统路径环境变量中删除了app.exe目录。我读了它,现在它工作了…设置app=%%~dpi工作吗?那
哪里有“app.exe”
呢?要捕获输出,请在('where“app.exe')中对/F“delims=eol=|“%%A执行,并设置“app=%%A)”
。无论如何,echo%APP%
必须在循环之外,因此超出了最后一个)
@Regejok,我认为OP希望通过PATH
变量查找app.exe
;~dp
修饰符仅返回与app.exe
的真实位置无关的当前目录,因为当文件集不包含任何全局通配符(*
,?
)时,for
甚至不访问文件系统……将回音移动到循环外部对我来说是可行的。
for /f "tokens=* delims=" %%a in ('where app.exe') do set "app=%%a"
echo %app%