Command line Windows CMD:如何将正在运行的程序输出通过管道传输到FINDSTR并写入文件
我试图过滤正在运行的程序(ping)的输出,并将结果写入文件 在以下示例中,ping程序将一直运行,直到按下CTRL-C:Command line Windows CMD:如何将正在运行的程序输出通过管道传输到FINDSTR并写入文件,command-line,cmd,pipe,findstr,windows-console,Command Line,Cmd,Pipe,Findstr,Windows Console,我试图过滤正在运行的程序(ping)的输出,并将结果写入文件 在以下示例中,ping程序将一直运行,直到按下CTRL-C: ping www.google.com -t | findstr "Reply" >> file.txt 这样做的结果是创建了“file.txt”,但是内容是空的 另一方面,当使用CTRL-C中断时,以下代码(没有管道连接到findstr)将起作用 ping www.google.com -t >> file.txt 我在这里遗漏了什么?控制fi
ping www.google.com -t | findstr "Reply" >> file.txt
这样做的结果是创建了“file.txt”,但是内容是空的
另一方面,当使用CTRL-C中断时,以下代码(没有管道连接到findstr)将起作用
ping www.google.com -t >> file.txt
我在这里遗漏了什么?控制findstr命令的拼写区分大小写,您可以使用/I表示禁用的区分大小写,而不使用双引号 参数t不允许在文件中重定向,因为如果使用n参数文件,且回复数为“等待重播结束以查看结果文件”,则管道将在执行FINDSTR之前接收结果
ping www.google.com -n 200 | findstr /I reply >> file.txt
当管道命令完成时,文件将被填充。但是,
ping-t
永远不会结束。您必须构建自己的循环(这有一些优点…):
:循环
>file.txt
ping-n 1 www.google.de | find/i“Reply”>>file.txt
ping-n2-w500 localhost>nul
转到:循环
第二个
ping
只是“500毫秒等待”。只要尝试for
循环即可
@echo off
(for /l %%a in (0) do ping -t -n 1 www.google.com | findstr /i "reply")>file.txt
从
ping
的文档中:
-t:Ping指定的主机,直到停止
这意味着它正在等待用户输入完成ping
命令。另一方面,管道等待输入,并将收到的任何输入重定向到
file.txt
(在这种情况下,没有收到输入,因为ping
正在等待用户输入完成ping
命令,所以创建了一个空白文件)
您可以首先将ping
重定向到文件:ping www.google.com-t>>file.txt
然后,当您有足够的ping时(通过Ctrl-C),使用findstr
:findstr“Reply”file.txt>>file2.txt
@echo off
(for /l %%a in (0) do ping -t -n 1 www.google.com | findstr /i "reply")>file.txt