Endlosschleife auf der Kommandozeile

In der Windows-Eingabeaufforderung möchte ich den Befehl arp -a alle fünf Sekunden automatisch aufrufen, um zu sehen, wie Einträge im ARP-Cache erscheinen und verschwinden. In einer Batch-Datei würde ich dafür ein Label und den goto-Befehl nutzen, doch das scheint direkt auf der Kommandozeile nicht zu funktionieren.

vorlesen Druckansicht
Lesezeit: 1 Min.
Von
  • Björn Hansen

In der Windows-Eingabeaufforderung möchte ich den Befehl arp -a alle fünf Sekunden automatisch aufrufen, um zu sehen, wie Einträge im ARP-Cache erscheinen und verschwinden. In einer Batch-Datei würde ich dafür ein Label und den goto-Befehl nutzen, doch das scheint direkt auf der Kommandozeile nicht zu funktionieren.

Auf der Kommandozeile können Sie seit Windows XP mit den neuen Optionen des for-Befehls eine Endlosschleife bauen:

for /L %i in (0,0,0) do @arp -a & ping -n 6 127.0.0.1>nul

Mit /L geben Sie Start- und Endwert sowie die Schrittweite ein wie bei der for-Schleife von Programmiersprachen. Hier wird die Variable %i von 0 bis 0 hochgezählt, aber (das ist der Trick für die Endlosschleife) mit der Schrittweite 0. Das @ bewirkt, dass der folgenden Befehl nicht jedes Mal mit ausgegeben wird.

Hinter Ihrem arp-Befehl folgt noch das, was Microsoft als offizielle Methode zum Vertrödeln von fünf Sekunden empfiehlt, denn es fehlt der unter Unix übliche Befehl sleep: Da ping zwischen zwei Paketen eine Sekunde Pause macht, schickt man einfach einige Ping-Pakete an das Loopback-Interface und leitet die Ausgabe in den Orkus (nul). Das & zwischen den Befehlen bedeutet für Windows nur, dass sie nacheinander ausgeführt werden. (ha)