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.
- 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)