如何强制 Windows 命令提示符将文本输出逐行刷新到文件中
How to force Windows Comand Prompt to flush text output to a file line-by-line
我正在尝试使用
在我的 Windows CE5.0 机器命令提示符中记录每个 ping
> ping 192.168.1.1 -t -l 60000 >> ping.txt
文件以单行输出开始,然后仅在按下 'ctrl+c' 后刷新。
我想知道是否有办法强制它在每一行中打印。
我不知道有什么直接的方法可以做到这一点。
但是您可以通过在(无限)循环中执行单个 ping 请求并在循环中写入日志文件来解决这个问题,如下所示:
for /L %I in () do @(timeout 1 > nul & ping 192.168.1.1 -n 1 -l 60000 | find "TTL=" >> "ping.txt")
timeout 1
命令在每个循环迭代中建立一秒的延迟以避免沉重的 CPU 负载,> nul
抑制其控制台输出。
find
命令用于从肯定回复(如 Reply from 192.168.1.1: bytes=60000 time<1ms TTL=128
)中过滤包含 TTL
的行。如果需要,您可以将其更改为 findstr /B /C:"Reply from " /C:"Request " /C:"Ping request "
,例如,以捕获正面回复以及 Request timed out.
或 Ping request could not find host ...
等负面回复,或者您可以将其完全删除(还有 |
) 将整个 ping
响应写入文件,包括页眉和页脚。
我正在尝试使用
在我的 Windows CE5.0 机器命令提示符中记录每个 ping> ping 192.168.1.1 -t -l 60000 >> ping.txt
文件以单行输出开始,然后仅在按下 'ctrl+c' 后刷新。
我想知道是否有办法强制它在每一行中打印。
我不知道有什么直接的方法可以做到这一点。
但是您可以通过在(无限)循环中执行单个 ping 请求并在循环中写入日志文件来解决这个问题,如下所示:
for /L %I in () do @(timeout 1 > nul & ping 192.168.1.1 -n 1 -l 60000 | find "TTL=" >> "ping.txt")
timeout 1
命令在每个循环迭代中建立一秒的延迟以避免沉重的 CPU 负载,> nul
抑制其控制台输出。
find
命令用于从肯定回复(如 Reply from 192.168.1.1: bytes=60000 time<1ms TTL=128
)中过滤包含 TTL
的行。如果需要,您可以将其更改为 findstr /B /C:"Reply from " /C:"Request " /C:"Ping request "
,例如,以捕获正面回复以及 Request timed out.
或 Ping request could not find host ...
等负面回复,或者您可以将其完全删除(还有 |
) 将整个 ping
响应写入文件,包括页眉和页脚。