多次向windows批处理文件传递参数

多次向windows批处理文件传递参数,windows,batch-file,parameter-passing,Windows,Batch File,Parameter Passing,我在向批处理文件传递参数时遇到问题。一个参数文件将有n行,我想执行bacth读取第一行,将其作为.bat中的一个参数并执行。读取下一行,将其作为第二个参数再次执行。同样,如果在文本文件中发现n行,则应执行n次。(例如,如果文本文件有100行,.bat中的循环执行应继续100次)。 我有这样的剧本 @echo off setlocal enabledelayedexpansion set file1=D:\Batch\parm.txt set /a cnt=0 for /f "tokens

我在向批处理文件传递参数时遇到问题。一个参数文件将有n行,我想执行bacth读取第一行,将其作为.bat中的一个参数并执行。读取下一行,将其作为第二个参数再次执行。同样,如果在文本文件中发现n行,则应执行n次。(例如,如果文本文件有100行,.bat中的循环执行应继续100次)。 我有这样的剧本

@echo off

setlocal enabledelayedexpansion

set file1=D:\Batch\parm.txt

set /a cnt=0

for /f "tokens=*" %%a in (%file1%) do (

set %file1% =%%a

echo !%file1%!
)

FOR /F "tokens=1 delims=|" %%G IN (%file1%) DO set a1=%%G

FOR /F "tokens=2 delims=|" %%K IN (%file1%) DO set a2=%%K

FOR /F "tokens=3 delims=|" %%I IN (%file1%) DO set a3=%%I

echo parameter file found

echo reading parameters to pass through

echo (%a1%,%a2%,%a3%)>>D:\Batch\output.txt

goto break

:break

set /a cnt+=1
exit /b
我的参数文件的输入为 我的输出应该是: 找到参数文件

读取要通过的参数

“印度”、“澳大利亚”、“非洲”

找到参数文件

读取要通过的参数

“I1”、“A1”、“A11”

找到参数文件

读取要通过的参数

“I2”、“A2”、“A12”


我目前只得到最后一个参数作为输出。请帮助我更正脚本。

您的第一个FOR循环太疯狂了-它试图创建一个名称与其值匹配的变量。我看不出这有什么用

@echo off

setlocal enabledelayedexpansion

set file1=D:\Batch\parm.txt

set /a cnt=0

for /f "tokens=*" %%a in (%file1%) do (

set %file1%=%%a

echo !%file1%!
)

FOR /F "tokens=1,2,3 delims=|" %%G IN (%file1%) DO set a1=%%a&set a2=%%b&set a3=%%c

echo parameter file found>>D:\Batch\output.txt

echo reading parameters to pass through>>D:\Batch\output.txt

echo (%a1%,%a2%,%a3%)>>D:\Batch\output.txt

goto break

:break

set /a cnt+=1
exit /b
每个参数的逻辑都是错误的。读取循环中第一个参数的整个文件。当该循环完成时,找到的最后一行只有一个参数值。然后对第2个和第3个参数执行相同的过程。那不行

您应该在一个循环中读取所有3个参数

@echo off
setlocal
set "file1=D:\Batch\parm.txt"
if exist "%file1%" (
  echo parameter file found
  echo reading parameters to pass through
  set /a cnt=0
  for /f "usebackq tokens=1-3 delims=|" %%A IN ("%file1%") do (
    echo (%%A,%%B,%%C^)
    set /a cnt+=1
  )
)>d:\batch\output.txt
echo cnt=%cnt%
exit /b

您的第一个FOR循环是疯狂的-它试图创建一个名称与其值匹配的变量。我看不出这有什么用

每个参数的逻辑都是错误的。读取循环中第一个参数的整个文件。当该循环完成时,找到的最后一行只有一个参数值。然后对第2个和第3个参数执行相同的过程。那不行

您应该在一个循环中读取所有3个参数

@echo off
setlocal
set "file1=D:\Batch\parm.txt"
if exist "%file1%" (
  echo parameter file found
  echo reading parameters to pass through
  set /a cnt=0
  for /f "usebackq tokens=1-3 delims=|" %%A IN ("%file1%") do (
    echo (%%A,%%B,%%C^)
    set /a cnt+=1
  )
)>d:\batch\output.txt
echo cnt=%cnt%
exit /b

感谢您的帮助。我仍然无法形成循环。输出类似于读取参数以通过“印度”、“澳大利亚”、“非洲”、“I1”、“A1”、“A11”、“I2”、“A2”、“A12”找到的参数文件同时执行所有参数。我希望每个参数与echo语句一起一次执行一个。Count显示为一个。循环不重复是否会有问题。谢谢again@Gpgsam-出现错误-必须在ECHO语句中转义
字符。现在都修好了。计数现在是预期的3。感谢您的帮助。我仍然无法形成循环。输出类似于读取参数的参数文件,通过“印度”、“澳大利亚”、“非洲”、“I1”、“A1”、“A11”、“I2”、“A2”、“A12”同时执行所有参数。我希望每个参数与echo语句一起一次执行一个。Count显示为一个。循环不重复是否会有问题。谢谢again@Gpgsam-出现错误-必须在ECHO语句中转义
字符。现在都修好了。计数现在是预期的3。谢谢。仍然无法形成循环。谢谢。仍然无法形成循环。