批处理脚本将文件内容读入数组

H的家伙,使用Windows批处理脚本我期待传递一个命令x次数不同的参数,每一次,从文件中parsing的参数。

例如有一个文本文件说arg1 arg 2 arg3,批处理脚本将parsing这个并运行

program.exe -arg1 program.exe -arg2 program.exe -arg3 

我正在考虑逐行阅读文件到一个数组然后做每个循环,但没有经验的Windows脚本这样做

好的,这里我们去…召回。 您总是需要提供1个参数 – 每次调用的可执行文件。 您还需要创建一个参数文件:args.txt,默认情况下,每行应该有一个参数。 如果参数有空格或特殊字符,则应该引用转义字符。

来源: recall.bat

 @echo off setLocal EnableDelayedExpansion ::: recall.bat - Call an executable with a series of arguments ::: usage: recall $exec [$argfile] ::: exec - the executable to recall with arguments ::: argfile - the file that contains the arguments, if empty will ::: default to args.txt ::: argfile format: ::: One argument per line, quote-escaped if there's spaces/special chars if "%~1"=="" findstr "^:::" "%~f0"&GOTO:EOF set argfile=args.txt :: Reset argfile if supplied. if "%~2" neq "" set argfile="%~2" :: Remove quotes set argfile=!argfile:"=! for /f "tokens=*" %%G in (%argfile%) do ( call %1 %%G ) 

例:

args.txt

 hello world "hello world" 

呼叫:

 recall echo args.txt 

输出:

 hello world "hello world" 

你应该可以使用for循环。 假设文件args.txt包含参数,那么这应该工作:

 for /f %a in (args.txt) do program.exe -%a 

编辑根据您使用的命令处理器,如果在批处理文件中运行上述语句,则可能需要在命令行中使用两个%符号。 使用非常漂亮的JP软件命令提示符时没有必要。 我认为,虽然,这是必要的默认cmd.exe / command.com提示。

 for /f %%a in (args.txt) do program.exe -%%a