我正在尝试编写一个简单的批处理文件,该文件从一个文件中获取一些字符并将它们写入另一个文件中。 它一定很简单,但我有一个问题:似乎只处理了最后一行。
源文件
test001.txt
包含
[
"942877b2-c7f1e0ab-6c611041-66784a0b-a002493c",
"245af4a4-c514ffe4-6a71aae4-5555af5s-e5acb21a",
"186fe24f-5fa1ea17-2660e457-f955946a-e460d3bc",
"942877b2-c7f1e0ab-6c611041-66784a0b-a002493c",
"186fe24f-5fa1ea17-2660e457-f955946a-e460d3bc"
]
行数可能不同,但结构是相同的。 现在我正在使用这个代码
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "infile=test001.txt"
if not exist %infile% (
echo File '%infile%' does not exist^^!
goto :eof
)
for /f tokens^=2^ delims^=^" %%F in (%infile%) do (
echo %%F
)
我得到了想要的输出,即:
942877b2-c7f1e0ab-6c611041-66784a0b-a002493c
245af4a4-c514ffe4-6a71aae4-5555af5s-e5acb21a
186fe24f-5fa1ea17-2660e457-f955946a-e460d3bc
942877b2-c7f1e0ab-6c611041-66784a0b-a002493c
186fe24f-5fa1ea17-2660e457-f955946a-e460d3bc
如果我将输出重定向到在
>fileout.txt
之后添加 echo %%F
的文件,则文件 fileout.txt
仅包含最后一行。
有人可以帮助我吗?
这是我的评论的扩展,(带有附加示例)。
首选单写方法,(来自评论):
@Echo Off
Setlocal EnableExtensions DisableDelayedExpansion
Set "infile=test001.txt"
If Not Exist "%infile%"" (Echo File '%infile%' does not exist!
%SystemRoot%\System32\timeout.exe /T 5 /NoBreak 1>NUL & GoTo :EOF)
( For /F UseBackQ^ Tokens^=2^ Delims^=^" %%G In ("%infile%") Do Echo %%G
) 1>"FileOut.txt"
追加替代方案 1:
@Echo Off
Setlocal EnableExtensions DisableDelayedExpansion
Set "infile=test001.txt"
If Not Exist "%infile%"" (Echo File '%infile%' does not exist!
%SystemRoot%\System32\timeout.exe /T 5 /NoBreak 1>NUL & GoTo :EOF)
For /F UseBackQ^ Tokens^=2^ Delims^=^" %%G In ("%infile%"
) Do (Echo %%G) 1>>"FileOut.txt"
追加替代方案 2,(来自评论):
@Echo Off
Setlocal EnableExtensions DisableDelayedExpansion
Set "infile=test001.txt"
If Not Exist "%infile%"" (Echo File '%infile%' does not exist!
%SystemRoot%\System32\timeout.exe /T 5 /NoBreak 1>NUL & GoTo :EOF)
For /F UseBackQ^ Tokens^=2^ Delims^=^" %%G In ("%infile%"
) Do 1>>"FileOut.txt" Echo %%G