Windows 如何在for循环中展开命令中的env var
我有一个简单的for循环,希望在下面的脚本中为dir中的每个文件运行一个命令。无论何时运行它,都会出现以下错误:“INST_PATH\bin\testBin.exe此时意外出现。” 我可以看出它无法扩展环境变量。扩展%%I时似乎也有问题 另外,如果我想给一个变量一个默认值,如果命令行没有提供,我该怎么做?例如,如果用户没有给出Dir,而我想假设它是当前Dir,那么我如何在脚本中这样做Windows 如何在for循环中展开命令中的env var,windows,batch-file,Windows,Batch File,我有一个简单的for循环,希望在下面的脚本中为dir中的每个文件运行一个命令。无论何时运行它,都会出现以下错误:“INST_PATH\bin\testBin.exe此时意外出现。” 我可以看出它无法扩展环境变量。扩展%%I时似乎也有问题 另外,如果我想给一个变量一个默认值,如果命令行没有提供,我该怎么做?例如,如果用户没有给出Dir,而我想假设它是当前Dir,那么我如何在脚本中这样做 set Dir=%1 set OutDir=%2 pushd %Dir% for %i in (*.*) do
set Dir=%1
set OutDir=%2
pushd %Dir%
for %i in (*.*) do %INST_PATH%\bin\testBin.exe -I=. --cpp_out=. %%i
popd
提前感谢您的帮助。两个问题,两个答案: 在batchfiles中,必须对变量使用双百分号:
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"