基于文本文件中使用蝙蝠脚本的单词复制行
我有一个巨大的文本文件,我只需要复制某些行。我为此写了一个蝙蝠脚本。我浏览文本文件并仅考虑那些以"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
作为前缀词的所有四行?
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=!
)的(第一次)事件在的敏感的方式完成!
你可以这样做吗?
findstr /b ResponseCode "E:\test.txt" >>"E:\output.txt"
如果在行的开始处存在“ResponseCode”,/ b告诉它只输出行。
在采取上述质疑方法之前,我已经尝试过了。在绝对没有数据的情况下返回一个空白的'output.txt' –
您可以尝试针对C驱动器上的文件运行该命令吗?只是为了看看它是否是一个权限问题,当我在我的机器上测试它时,FINDSTR行确实工作。 –
如果“_by针对我的C盘上的文件运行该命令”意味着运行C文件夹中存在的文件的脚本,我也是这样做的,但结果仍然保持不变。 –
“ResponseCode”是感兴趣的第一件事情吗?有没有领先的白色空间?你想'ResponseCode' _not_被写入'output.txt'吗?信件的情况很重要吗? – aschipfl
这样的行开始是特定的'“& lt; ResponseCode”'。但除了'ResponseCode'以外的其他内容可能会有所不同。这就是为什么我把它作为参考。我需要''ResponseCode''后面的数据,所以无论是否写入ResponseCode都没关系。是的,这种情况很重要,因为它是在文件中获得的。 –