我有一个包含n行的文本文件。 m个行包含我感兴趣的字符串(m <= n)。我需要一个批处理文件,它只会将包含该字符串的单行(例如第一次出现)复制到新的文本文件中。当我使用findstr命令时,它将复制包含该字符串的所有行。
谢谢! Paul Safier
答案 0 :(得分:1)
给出定位m行的FINDSTR命令(可以根据需要简单或复杂)
findstr "search" "fileName.txt"
然后您可以使用FOR / F循环处理该命令的结果。您可以使用GOTO在第一个匹配行之后跳出循环。
for /f "delims=" %%A in ('findstr "search" "fileName.txt"') do (
echo %%A >>"outFile.txt"
goto :break
)
:break
FOR命令是批处理可用的更复杂的命令之一。有很多选择。您可以通过在命令提示符下键入HELP FOR
或FOR /?
来获取有关命令的帮助。
“DELIMS =”选项禁用将行解析为标记。如果没有该选项,FOR / F会将每一行分成标记,由空格或制表符分隔。分隔符列表可以设置为其他字符,或者在您的情况下,设置为空。
我上面给出的代码将跳过以;
开头的行,因为FOR / F会跳过任何以EOL字符开头的行 - ;
默认情况下。您可以将EOL字符更改为任何单个字符。但是如果你不知道你的匹配行可能从哪个开始,那么你不知道EOL使用什么字符。完全禁用所有令牌解析和EOL跳过的语法很奇怪:
for /f delims^=^ eol^= %%A in (...) do ...