如何将findstr的输出重定向到文件?

时间:2014-03-05 03:38:46

标签: batch-file redirect findstr

我有一个批处理文件,我希望获取findstr命令的输出并将其重定向到文件。

Type "%CH% log.txt" | Findstr /v "%lastMod%" > "%CH% log.txt"

变量 CH lastMod 已经定义,每当我删除重定向运算符时,它都会向屏幕输出我想要输出的内容。{{1}每当我添加重定向操作符时,它都不会向我的文件输出任何内容(文件为空)。我试图通过使用像findstr,redirect,to file和untocumented Type "%CH% log.txt" | Findstr /v "%lastMod%"之类的关键字找到答案,但没有运气。我想知道是否有人知道答案。

1 个答案:

答案 0 :(得分:3)

您的输出文件与输入文件相同。由于您没有使用追加模式,因此在TYPE命令有机会输出原始内容之前,它会有效地清除文件内容。您的FINDSTR永远不会看到任何输入!

解决方案是重定向到新的临时文件,然后在完成后将临时文件移动到原始名称。

type "%CH% log.txt" | findstr /v "%lastMod%" > "%CH% log.txt.new"
move /y "%CH% log.txt.new" "%CH% log.txt" >nul

你可以通过让FINDSTR直接读取文件来简化一下

findstr /v "%lastMod%" "%CH% log.txt" > "%CH% log.txt.new"
move /y "%CH% log.txt.new" "%CH% log.txt" >nul