Windows CMD:如何将运行程序输出管道传输到FINDSTR并写入文件

时间:2015-03-19 16:55:19

标签: command-line cmd pipe findstr windows-console

我正在尝试过滤正在运行的程序的输出(ping)并将结果写入文件。

在以下示例中,ping程序一直运行,直到按下CTRL-C:

ping www.google.com -t | findstr "Reply" >> file.txt

这样做的结果是创建了' file.txt'但是,内容为空

另一方面,以下代码没有管道到findstr在CTRL-C中断时工作

ping www.google.com -t >> file.txt

我在这里缺少什么?

4 个答案:

答案 0 :(得分:2)

控制findstr命令的拼写区分大小写,您可以使用/ I表示禁用区分大小写,而点不使用双引号

参数t不允许在文件中重定向,因为管道在执行FINDSTR之前接收结果,如果使用带有回复数量的n参数文件请等待重放结束以查看结果文件。

ping www.google.com -n 200 | findstr /I reply  >> file.txt

答案 1 :(得分:1)

只需尝试for循环

@echo off
(for /l %%a in (0) do ping -t -n 1 www.google.com | findstr /i "reply")>file.txt

答案 2 :(得分:0)

当管道命令完成时,文件将被填充。但ping -t永远不会完成。你必须建立自己的循环(它有一些优点......):

:loop
<nul set /p "=%time% " >>file.txt
ping -n 1 www.google.de|find /i "Reply" >>file.txt
ping -n 2 -w 500 localhost >nul
goto :loop

第二个ping只是“500毫秒等待”。

答案 3 :(得分:0)

摘自ping的文档:

-t:ping指定的主机,直到停止。

表示正在等待用户输入以完成ping命令。
另一方面,管道等待输入,并将接收到的所有输入重定向到file.txt(在这种情况下,未接收到输入,因为ping正在等待用户输入完成{{1} }命令,因此创建了一个空白文件

您可以先将ping重定向到文件:
ping

然后,当您有足够的ping(通过Ctrl-C)时,使用ping www.google.com -t >> file.txt进行过滤:
findstr