【发布时间】:2013-01-15 23:39:35
【问题描述】:
我有一个包含 n 行的文本文件。 m 行包含我感兴趣的字符串 (m
谢谢! 保罗·萨菲尔
【问题讨论】:
标签: batch-file copy dos findstr
我有一个包含 n 行的文本文件。 m 行包含我感兴趣的字符串 (m
谢谢! 保罗·萨菲尔
【问题讨论】:
标签: batch-file copy dos findstr
鉴于您的 FINDSTR 命令可以定位您的 m 行(它可以根据您的需要简单或复杂)
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 ...
【讨论】: