对于批处理脚本中的循环,不处理输入文件中的所有记录

时间:2017-05-04 10:39:46

标签: batch-file for-loop

input.txt文件包含32条记录,但使用此for循环批处理脚本在output.txt文件中只处理了18条记录。任何帮助非常感谢!

代码如下(请注意 echo>>%stdout%有50行:process语句未在此处复制):

@echo off
set "source=C:\test\test\input.txt"
set "stdout=C:\test\test\output.txt"

for /f "tokens=1,2,3,4 delims='" %%a in (%source%) do ( 
set partner=%%a&set blank=%%b&set comment=%%c&set host=%%d&set
call :process
)
goto :eof

:process
SETLOCAL EnableDelayedExpansion
SET host_final=%host:~1%
echo >> %stdout%  partner=%partner% comment=%comment% host=%host_final%
echo >> %stdout%  XXXXXXXXXXXXXXXXXXXXXX
....
echo >> %stdout%  (line 50 end of %partner%)
ENDLOCAL
goto :eof

1 个答案:

答案 0 :(得分:1)

我不确定您回复的所有这些内容是什么,但这是我建议的基本结构:

@Echo Off
Set "source=C:\test\test\input.txt"
Set "stdout=C:\test\test\output.txt"
For /F "UseBackQ EOL=' Tokens=1,3,4 Delims='" %%A In ("%source%"
) Do Call :Process "%%~A" "%%~B" "%%~C"
GoTo :EOF

:Process
Set "host=%~3"
>>"%stdout%" Echo partner=%~1 comment=%~2 host=%host:~1%
GoTo :EOF

由于我还没有看到源文件,我必须假设您提供的令牌和分隔符是正确的。