如何强制 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 响应写入文件,包括页眉和页脚。