我正在尝试过滤正在运行的程序的输出(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
我在这里缺少什么?
答案 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