如何在for循环中扩展env var in命令

我有一个简单的循环,并希望运行下面的脚本中的每个文件的命令。 每当我运行它,我得到这个错误“INST_PATH \ bin \ testBin.exe在这个时候是意外的。

我可以看到它不能扩大env var。 也似乎有扩大%%我的问题。

另外,如果我想给默认值的variables如果没有在命令行提供,我该怎么做? 例如,如果用户不给Dir,我想把它当作目前的dir,我怎么在脚本中做到这一点?

set Dir=%1 set OutDir=%2 pushd %Dir% for %i in (*.*) do %INST_PATH%\bin\testBin.exe -I=. --cpp_out=. %%i popd 

在此先感谢您的帮助。

两个问题,两个答案:

在批处理文件中,您必须对for变量使用双重百分号:

 for %%i in (*.*) do echo %%i 

设置一个默认值,检查变量是否为空:

 if "%1%=="" (set "dir=Z:\DefaultDir") else (set "dir=%1") 

或者作为替代:

 set dir=%1 if not defined dir set "dir=Z:\DefaultDir"