Batch file 批处理脚本中的For循环未处理输入文件中的所有记录
input.txt文件包含32条记录,但在output.txt文件中使用此for循环批处理脚本仅处理18条记录。非常感谢您的帮助 代码如下请注意,echo>>%stdout%在:流程语句中有50行未复制到此处:Batch file 批处理脚本中的For循环未处理输入文件中的所有记录,batch-file,for-loop,Batch File,For Loop,input.txt文件包含32条记录,但在output.txt文件中使用此for循环批处理脚本仅处理18条记录。非常感谢您的帮助 代码如下请注意,echo>>%stdout%在:流程语句中有50行未复制到此处: @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
@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
我不确定你在呼应什么,但这是我建议的基本结构: @回音 设置source=C:\test\test\input.txt 设置stdout=C:\test\test\output.txt 对于/F UseBackQ EOL='Tokens=1,3,4 Delims='%%A在%source%中 Do Call:进程%%~A%%~B%%~C 后藤:EOF :进程 设置主机=%~3 >>%标准输出%Echo合作伙伴=%~1注释=%~2主机=%host:~1% 后藤:EOF
由于我没有看到源文件,我不得不假设您提供的标记和分隔符是正确的。如果问题出在数据文件上,您应该发布数据文件,否则我们只能猜测问题出在哪里。。。但是,我敢打赌,未处理的记录以分号开头;这是默认的eol=;for/F命令中的字符。是的,右边的问题是数据文件中的字符“|”。我更正了分隔符,循环处理了所有记录。谢谢你的回答。你的回答准确无误,比我快了一分钟。stdout周围有%的缺失。如果我加上它们,我可能不会打败你!现在已修复。使用此结构,我在输出文件中得到了相同的结果。问题是分隔符。我纠正了这一点,它循环并处理所有记录。感谢您的帮助:正如我在回答中提到的,您没有提供任何有关源文件的信息,因此我们不得不假设您的信息是正确的,最有可能是逗号或管道。这不应影响我答案的正确性,我要求你相应地将其标记为已接受。