Unter Linux kennt jeder den watch-Befehl: Er führt einen Befehl in regelmäßigen Abständen aus und aktualisiert die Ausgabe im Terminal. Windows bietet kein natives Äquivalent – aber mit einem einfachen Batch-Skript lässt sich dasselbe Verhalten nachbauen. Ideal für die Überwachung von Netzwerksitzungen, Prozessen oder anderen sich ändernden Systemzuständen.
Das Grundprinzip: Endlosschleife mit Pause
Das folgende Batch-Skript führt einen Befehl wiederholt aus, wartet jeweils einige Sekunden und leert dabei den Bildschirm – exakt wie watch unter Unix. Als Beispiel wird net sess verwendet, das alle aktiven Netzwerksitzungen anzeigt:
@echo off :loop1 ping -n 5 127.0.0.1 > NUL cls net sess goto loop1 pause
Erklärung der einzelnen Zeilen
@echo off unterdrückt die Ausgabe der Befehle selbst – nur deren Ergebnisse werden angezeigt. ping -n 5 127.0.0.1 > NUL erzeugt eine Wartezeit von ca. 4 Sekunden (5 Ping-Pakete × ~1 Sekunde). Die Ausgabe wird nach NUL umgeleitet, also verworfen. cls leert den Bildschirm, net sess zeigt die aktuellen Sitzungen, und goto loop1 springt zurück an den Anfang der Schleife.
Wartezeit anpassen
Die Pause lässt sich durch Ändern der Ping-Anzahl anpassen. Für eine Sekunde Pause: ping -n 2 127.0.0.1 > NUL (1 Sekunde ≈ n−1). Für 10 Sekunden: ping -n 11 127.0.0.1 > NUL. Ab Windows Vista steht alternativ timeout zur Verfügung:
@echo off :loop1 cls net sess timeout /t 5 /nobreak > NUL goto loop1
Andere nützliche Befehle für die Schleife
Das Muster lässt sich mit beliebigen Befehlen kombinieren. Hier einige praktische Anwendungsfälle:
REM Aktive TCP-Verbindungen überwachen :loop1 cls netstat -an timeout /t 3 /nobreak > NUL goto loop1 REM Prozessliste überwachen :loop1 cls tasklist /fi "imagename eq chrome.exe" timeout /t 5 /nobreak > NUL goto loop1 REM Freien Speicherplatz überwachen :loop1 cls dir C: | findstr "bytes free" timeout /t 10 /nobreak > NUL goto loop1
PowerShell-Alternative
Mit PowerShell lässt sich dasselbe eleganter umsetzen – und der Befehl kann als Parameter übergeben werden:
while ($true) {
Clear-Host
Get-Date
net sess
Start-Sleep -Seconds 5
}
Wer häufig auf macOS oder Linux arbeitet, kann den nativen watch-Befehl nutzen – eine entsprechende Implementierung für macOS findet sich im Beitrag watch für macOS. Weitere Windows-Skript-Tipps gibt es im Bereich Windows-Administration.
