我有一个批处理文件,我希望获取 findstr 命令的输出并将其重定向到文件。
Type "%CH% log.txt" | Findstr /v "%lastMod%" > "%CH% log.txt"
变量 CH 和 lastMod 已定义,每当我删除重定向运算符时,它都会准确地向屏幕输出我想要的内容。Type “%CH%log.txt” | Findstr/v "%lastMod%"
每当我添加重定向运算符时,它都不会向我的文件输出任何内容(文件为空)。我尝试使用 findstr、redirect、to file 和未记录的 findstr
等关键字来查找答案,但没有成功。我想知道是否有人知道这个问题的答案。
最佳答案
您的输出文件与输入文件相同。由于您没有使用附加模式,因此它会在 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
关于batch-file - 如何将 findstr 的输出重定向到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22188027/