DOS-Box - alt aber gut

  • Mon 23 Mar 2009
  • 10|45

DOS-Box Irgendwie gilt es heutzutage als "uncool", sich noch mit der guten, alten DOS-Box und di­ver­sen Batch-Befehlen auszukennen - zumindest unter Windows.
Früher hat man command.com gebootet, heute Vista oder Windows 7. Ja, so ändern sich die Zeiten - gestern kryp­tische Befehle auf schwar­zem Grund und heute "klicki-bunti."
Die Frage ist nur, wie helfen uns die schicken Ober­flächen bei nicht ganz so all­täg­lichen Aufgaben?
In der Ausgabe 06/2009 der Zeitschrift c't ist in der Rubrik "Praxis/Hotline" auf Seite 199 ein sehr instruktives Beispiel aufgeführt, welches zeigt, wie sich auf den ersten Blick komplizierte Probleme doch relativ leicht lösen lassen - und zwar in der DOS-Box.
Ein Leser möchte wissen, ob und wie es machbar ist, in einer Windows-Ein­gabe­auf­forderung alle fünf Sekunden den Befehl arp -a auf­zu­ru­fen, um zu sehen, wie Ein­trä­ge im ARP-Cache auf­tauchen und wieder ver­schwin­den.

Die Lö­sung ist ele­gant: ab Windows XP lässt sich mit Bord­mitteln dank der neuen Optionen des for-Befehls eine End­los­schlei­fe basteln:

  1. for /L %i in (0, 0, 0) do @arp -a

Mit dem Parameter /L wird der Start- und End­wert sowie die Schritt­weite der Schleife angegeben, analog zu einer for-Schlei­fe in ande­ren Programmier­spra­chen. Die Variable %i wird von 0 bis 0 hoch­ge­zählt, und zwar - und das ist der ei­gent­liche Trick - mit einer Schritt­weite von 0. Durch den voran­gestell­ten @ (Klammer­affe) wird der auf das do fol­gen­de Befehl nicht im DOS-Fenster aus­ge­geben sondern nur das Ergebnis.

So weit, so gut; jetzt fehlen nur noch die fünf Sekunden Pause, die ver­strei­chen sollen, bevor der arp-Befehl erneut auf­ge­ru­fen wird. In der UNIX-Welt gibt es dafür das sleep-Kommando, unter Windows er­folgt er­neut der Griff in die Trick­kiste. Und zwar kommt uns hier der ping-Befehl zu Hilfe. Die laut c't von Microsoft offiziell empfohlene Methode, fünf Sekunden zu ver­trödeln, sieht nämlich so aus:

  1. ping -n 6 127.0.0.1 > nul

Die Erklärung ist denkbar einfach: ping macht zwischen zwei Paketen ge­nau ei­ne Se­kun­de Pause, also schickt man sechs Ping-Pakete an das Loopback-Interface und lei­tet die Aus­gabe des ping-Befehls ins Nirvana (> nul).

Verknüpft man nun noch die beiden Befehle mit &, lau­tet die kom­plette Befehls­zeile so:

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

Die DOS-Box hat zwar bereits einige Jährchen auf dem Buckel, ist aber nach wie vor ein sehr praktisches und mächtiges Werkzeug.

Quelle: c't 06/2009, Rubrik "Praxis/Hotline", Seite 199