H伙计们,使用Windows批处理脚本我希望每次使用不同的参数传递一个命令x次,从文件中解析参数。
例如有一个文本文件说arg1 arg 2 arg3,批处理脚本会解析它并运行
program.exe -arg1
program.exe -arg2
program.exe -arg3
我正在考虑逐行读取文件然后为每个循环执行一次,但是没有使用Windows脚本的经验
答案 0 :(得分:1)
您应该能够使用for
循环。假设文件args.txt
包含参数,那么这应该有效:
for /f %a in (args.txt) do program.exe -%a
编辑根据您使用的命令处理器,如果在批处理文件中运行上述语句,则可能需要在命令中的一行中使用两个%
符号。使用very nice JP Software命令提示符时没有必要。不过,我认为有必要使用默认的cmd.exe / command.com提示。
for /f %%a in (args.txt) do program.exe -%%a
答案 1 :(得分:1)
好的,我们在这里......召回.bat。您总是需要提供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"