如何在for循环

时间:2016-08-10 06:51:28

标签: windows batch-file

我有一个简单的for循环,并希望在下面的脚本中为dir中的每个文件运行一个命令。每当我运行它时,我都会收到此错误“INST_PATH \ bin \ testBin.exe此时出乎意料。”

我可以看到它无法扩展env var。似乎在扩展%% i时也存在问题。

此外,如果我想为变量IF提供默认值,而不是在命令行中提供,我该怎么做?对于例如如果用户没有给Dir,我想把它当作目前的dir,我该如何在脚本中做到这一点?

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

两个问题,两个答案:

在批处理文件中,您必须对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"