@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 %%adurch%a
Starten Sie den Ping, erzwingen Sie eine korrekte zeilengepufferte Ausgabe ( find /v) und starten Sie einen cmdProzess 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 /pLesen einer Zeile erfolgt, während der pingBefehl 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 pauseBeginn der Unterschale sind zwei zusätzliche Befehle enthalten (nur einer kann verwendet werden, aber wenn pauseein 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 localhostist 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 pingkann durch ein ersetzt werden pause, aber dann wird das erste Zeichen jeder gelesenen Zeile vom pauseund verbraucht und nicht vomset /p