我有一个批处理文件,我希望获取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%"
之类的关键字找到答案,但没有运气。我想知道是否有人知道答案。
答案 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