如何将一个字符串的单个实例从一个文本文件复制到一个新的文本文件?

时间:2013-01-15 23:39:36

标签: batch-file copy dos findstr

我有一个包含n行的文本文件。 m个行包含我感兴趣的字符串(m <= n)。我需要一个批处理文件,它只会将包含该字符串的单行(例如第一次出现)复制到新的文本文件中。当我使用findstr命令时,它将复制包含该字符串的所有行。

谢谢! Paul Safier

1 个答案:

答案 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 FORFOR /?来获取有关命令的帮助。

“DELIMS =”选项禁用将行解析为标记。如果没有该选项,FOR / F会将每一行分成标记,由空格或制表符分隔。分隔符列表可以设置为其他字符,或者在您的情况下,设置为空。

我上面给出的代码将跳过以;开头的行,因为FOR / F会跳过任何以EOL字符开头的行 - ;默认情况下。您可以将EOL字符更改为任何单个字符。但是如果你不知道你的匹配行可能从哪个开始,那么你不知道EOL使用什么字符。完全禁用所有令牌解析和EOL跳过的语法很奇怪:

for /f delims^=^ eol^= %%A in (...) do ...
相关问题