命令提示符可运行的FOR命令在BAT/CMD文件中失效的原因及解决方法
问题原因与解决办法
这事儿其实是命令提示符和批处理文件的语法差异导致的——在CMD窗口直接执行for循环时用单个%引用变量,但批处理文件里必须用双%%。
为啥会这样?因为批处理里单个%是用来指代命令行参数的(比如%1表示批处理接收的第一个参数),为了避免和for循环变量混淆,微软规定批处理里的for变量必须用双百分号来标识。
给你改好的可执行批处理代码:
for /r "%appdata%\..\Local\MyProg\2.0" %%D IN ("*MyProgram.exe") DO "%%~fD"
如果你的需求是找到文件后执行它,上面的代码就完全能用;要是需要给exe加启动参数,直接在"%%~fD"后面追加就行,比如:
for /r "%appdata%\..\Local\MyProg\2.0" %%D IN ("*MyProgram.exe") DO "%%~fD" -start
内容的提问来源于stack exchange,提问作者KiAnKo
相关产品推荐
相关产品推荐

