Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理脚本中的For循环未处理输入文件中的所有记录_Batch File_For Loop - Fatal编程技术网

Batch file 批处理脚本中的For循环未处理输入文件中的所有记录

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

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 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周围有%的缺失。如果我加上它们,我可能不会打败你!现在已修复。使用此结构,我在输出文件中得到了相同的结果。问题是分隔符。我纠正了这一点,它循环并处理所有记录。感谢您的帮助:正如我在回答中提到的,您没有提供任何有关源文件的信息,因此我们不得不假设您的信息是正确的,最有可能是逗号或管道。这不应影响我答案的正确性,我要求你相应地将其标记为已接受。