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