Texte Daten|teiler
Kopieren als Kulturtechnik

Batch Hacks



Die Batch-Programmierung gibt es bei Betriebssystemen von Microsoft nun schon eine ganze Weile, nämlich seit 1983 als MS-DOS 1.0 erschien. Vermutlich gilt sie deshalb heute bei vielen als Relikt aus einer Vergangenen Computer-Ära, aber auch wegen ihrer beschränkten Möglichkeiten gegenüber der PowerShell oder Shells wie der Bash. Dabei kann man mit ihr auch unter Windows 7 schnell kleine Automatisierungsaufgaben erledigen und die Lernkurve ist nicht ganz so Steil wie bei der PowerShell oder VBScript.

Einstieg

Einen Einstieg in die Batch-Programmierung findet man zum Beispiel im Wikibook Batch-Programmierung, bei Axel Hahn, oder in einem kurzen PDF von Tsutomu Katsura. Ein Batch-Skript zu schreiben ist, wie gesagt, nicht schwer. Ein kleines Skript, das einfach nur „Hallo Welt“ in die Kommandozeile schreibt, geht wie folgt: Zuerst öffnet man einen Editor, indem man unter Windows 7 die Windows-Taste drückt und „Editor“ in das Suchfeld eingibt. Danach drückt man Enter und Notepad wird geöffnet. Jetzt gibt man den Quelltext seines Programms ein. Genau genommen gibt man eine Abfolge von Kommandozeilen-Programmen ein, die vom Betriebssystem der Reihe nach abgearbeitet werden:

@echo off
echo.
echo Hallo Welt!
echo.
pause

Der Befehl echo gibt Text in die Kommandozeile aus. Dabei sorgt @echo off am Anfang des Skriptes dafür, dass die Ausgabe aller Befehle auf dem Bildschirm unterdrückt wird oder mittendrin ein @echo on Befehl erfolgt. Hängt man dann einen Punkt an echo, erzeugt man eine Leerzeile. Der Befehl pause am Ende des Skripts lässt die Kommandozeile solange geöffnet, bis eine Taste gedrückt wird. Das Skript kann man dann auf den Desktop speichern, dabei muss man der Datei aber die Endung .bat geben, zum Beispiel Meine-Welt.bat. Mit einem Doppelklick wird die Datei dann ausgeführt.

Da für die Batch im Prinzip nur die Kommandozeilen-Programme von Windows zur Verfügung stehen, muss man manchmal ein wenig kreativ werden, wenn es ein Programm, dass man bräuchte, nicht gibt. Es gibt in der Kommandozeile zum Beispiel keinen für alle Windows-Versionen gültigen Sleep-Befehl.

Der „Sleep“-Befehl in der Batch

Mit Windows Vista wurde der Timeout-Befehl eingeführt, der ein Batch-Skript dazu veranlasst, zu pausieren:

timeout /T <N>  > nul

Der Parameter -n gibt die Anzahl in Sekunden an, wie lange pausiert werden soll. Mit dem Operator „>“ wird die Standardausgabe nach „nul“ umgeleitet, was bedeutet, dass sie nicht in der Kommandozeile angezeigt wird.

Will man das Batch-Skript in älteren Windows-Versionen einsetzen, bekommt man allerdings ein Problem, weil es dort den Timeout-Befehl noch nicht gab. Im Weblog von Martin Abraham findet man aber einen kleinen Trick, wie man auch ohne timeout eine begrenzte Pause in ein Batch-Skript einbauen kann. Dazu benutzt er den Ping-Befehl:

ping -n <N> 127.0.0.1 > nul

Der Ping-Befehl prüft anhand des Rechnernamens oder der IP-Adresse, ob ein Rechner im Netzwerk vorhanden ist. Im obigen Beispiel wird die IP-Adresse 127.0.0.1 überprüft, die für den eigenen Rechner steht, also auf jeden Fall erreichbar sein sollte. Der Parameter -n gibt die Anzahl an, wie oft gepingt werden soll. Standardmäßig beträgt der Abstand zwischen den einzelnen Pings eine Sekunde.