Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在for循环中展开命令中的env var_Windows_Batch File - Fatal编程技术网

Windows 如何在for循环中展开命令中的env var

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

我有一个简单的for循环,希望在下面的脚本中为dir中的每个文件运行一个命令。无论何时运行它,都会出现以下错误:“INST_PATH\bin\testBin.exe此时意外出现。”

我可以看出它无法扩展环境变量。扩展%%I时似乎也有问题

另外,如果我想给一个变量一个默认值,如果命令行没有提供,我该怎么做?例如,如果用户没有给出Dir,而我想假设它是当前Dir,那么我如何在脚本中这样做

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"