@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!)"
Примітка : код, який буде використовуватися в пакетному файлі. Для використання з командного рядка замініть %%a
на%a
Запустіть пінг, примусово виведіть правильний буферизований вихід ( find /v
) і запустіть cmd
процес із увімкненим відкладеним розширенням, який буде виконувати нескінченний цикл зчитування конвеєрних даних, які будуть луною на консолі з префіксом поточного часу.
2015-01-08 відредаговано : У більш швидких / нових версіях машин / ОС існує проблема синхронізації в попередньому коді, що робить set /p
прочитане рядком, поки ping
команда все ще пише його, а результатом є скорочення рядків.
@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"
Дві додаткові pause
команди включені на початку під оболонки (можна використовувати лише одну, але, оскільки pause
споживає вхідний символ, пара CRLF порушується і зчитується рядок з LF), щоб дочекатися вхідних даних, а a ping -n 2 localhost
додається до зачекайте секунду для кожного прочитання у внутрішньому циклі. Результат - стабільніша поведінка та менше використання процесора.
ПРИМІТКА: Внутрішній ping
можна замінити на pause
, але тоді перший символ кожного прочитаного рядка споживається символом, pause
а не отримуєтьсяset /p