我有一个巨大的文本文件,我只需要复制某些行。我已经写了一个蝙蝠脚本。我浏览文本文件,只考虑那些以"ResponseCode"
为前缀的行。 bat文件如下:
@ECHO OFF & setlocal enabledelayedexpansion
if exist E:\output.txt del E:\output.txt
for /f "delims=" %%i in (E:\test.txt) do (
set "line0=%%i"
set "line=!line0:*ResponseCode=!"
if not "!line0!"=="!line!" (
for /f %%j in ("!line!") do set "line=%%j"
if not defined $a!line! (
set "$a!line!=!line!"
(echo(!line0!) >> E:\output.txt
)
)
)
但是当我运行上面的脚本时,它只复制test.txt
中的一行而不是预期的四行,并将其写入output.txt
。如何将包含ResponseCode
的所有四行复制为前缀字?
答案 0 :(得分:0)
你可以这样做吗?
findstr /b ResponseCode "E:\test.txt" >>"E:\output.txt"
/ b告诉它只输出该行,如果" ResponseCode"存在于行的开头。
答案 1 :(得分:0)
findstr /L "ResponseCode" "E:\test.txt"
将返回包含ResponseCode
字面的所有行
通过附加>> "E:\output.txt"
,可以轻松地将返回的行重定向到输出文件。
以下代码解析findstr
的输出并在 ResponseCode
之后输出的所有内容:
setlocal EnableDelayedExpansion
rem.> "E:\output.txt"
for /F "delims=" %%L in ('findstr /L "ResponseCode" "E:\test.txt"') do (
set "LINE=%%L" & set "LINE=!LINE:*ResponseCode=!" & echo !LINE!
) >> "E:\output.txt"
endlocal
请注意findstr
执行区分大小写的搜索,因为/I
不给出;但是,删除ResponseCode
(通过扩展!LINE:*ResponseCode=!
(第一次)出现的所有内容都是以 敏感的方式完成的!