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

标签 batch-file redirect findstr

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

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

变量 CHlastMod 已定义,每当我删除重定向运算符时,它都会准确地向屏幕输出我想要的内容。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/

相关文章:

windows - 如何在 Windows 批处理文件中将 PATH 设置为另一个带空格的变量值

windows - findstr 在一行中显示匹配项

batch-file - 尝试使用 ffmpeg 将 wav 与视频文件合并

从 falcon 身份验证重定向

apache - mod_rewrite 如果使用域 X 则重定向到特定 URL?

windows - 如何将输出重定向到 Gvim 作为要打开的文件列表?

regex - 为什么FINDSTR在powershell和cmd中表现不同?

windows - 按数字对文本文件的内容进行排序

php - 我应该将移动检测放在 .htaccess 或 php 的什么位置?

command - DOS 命令 FindStr