@echo off
ping -t localhost|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)"
Hinweis : Code, der in einer Batchdatei verwendet werden soll. Zur Verwendung über die Befehlszeile ersetzen %%a
durch%a
Starten Sie den Ping, erzwingen Sie eine korrekte zeilengepufferte Ausgabe ( find /v
) und starten Sie einen cmd
Prozess mit aktivierter verzögerter Erweiterung, der eine Endlosschleife durchführt, in der die weitergeleiteten Daten gelesen werden, die an die Konsole mit dem Präfix der aktuellen Zeit zurückgesendet werden.
08.01.2015 bearbeitet : In schnelleren / neueren Maschinen / Betriebssystemversionen gibt es im vorherigen Code ein Synchronisationsproblem, bei dem das set /p
Lesen einer Zeile erfolgt, während der ping
Befehl sie noch schreibt, und das Ergebnis sind Zeilenausschnitte.
@echo off
ping -t localhost|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"
Zu pause
Beginn der Unterschale sind zwei zusätzliche Befehle enthalten (nur einer kann verwendet werden, aber wenn pause
ein Eingabezeichen verbraucht wird, wird ein CRLF-Paar unterbrochen und eine Zeile mit einem LF wird gelesen), um auf Eingabedaten zu warten, und a ping -n 2 localhost
ist enthalten Warten Sie eine Sekunde für jeden Lesevorgang in der inneren Schleife. Das Ergebnis ist ein stabileres Verhalten und eine geringere CPU-Auslastung.
HINWEIS: Das Innere ping
kann durch ein ersetzt werden pause
, aber dann wird das erste Zeichen jeder gelesenen Zeile vom pause
und verbraucht und nicht vomset /p