循环文本输入的批处理文件

时间:2015-08-28 11:47:07

标签: windows batch-file

我正在使用此代码运行带有文本文件参数的批处理文件。但它只从输入文件中获取最后一个值。

@echo off 

cd /d C:\Users\infodba\Desktop\Export


for /f "eol=; tokens=1,2 delims=," %%a in (Input.txt) do
 ( 
    set ITEMID=%%a
    set REV=%%b
    call :write %%a %%b
)

:write
echo ITEMID=%ITEMID%, REV=%REV%

cd /d C:\Program Files\Siemens\NX 8.5\UGMANAGER
ug_export -part=%ITEMID% -rev=%REV% -u=arvind -p=asfa@p -role=dba -export_dir=C:\Users\infodba\Desktop\Export

exit /B 0

1 个答案:

答案 0 :(得分:1)

您需要在结束exit /B之后添加)命令,以便在主程序(:write循环)完成后无意中落入for子例程。<登记/> (正文的开头for需要与do关键字位于同一行。

在将ITEMIDREV传递到子程序时,无需设置%%a%%b
:write %1内使用%2访问第一个参数,@echo off pushd "C:\Program Files\Siemens\NX 8.5\UGMANAGER" for /f "usebackq eol=; tokens=1,2 delims=," %%a in ( "C:\Users\infodba\Desktop\Export\Input.txt" ) do ( call :write "%%~a" "%%~b" ) popd exit /B :write echo ITEMID="%~1", REV="%~2" ug_export -part="%~1" -rev="%~2" -u=arvind -p=asfa@p -role=dba -export_dir=C:\Users\infodba\Desktop\Export exit /B 0 访问第二个参数。

这应该有效:

ug_export

如果工具-part不支持引用-revug_export -part=%~1 -rev=%~2 ...个参数,请改为编写ug_export

我通过在主要部分中更改一次(使用:writepushd),避免每次执行popd时更改为目录路径@echo off

提示:对于调试,非常有助于暂时删除{{1}} ...