Windows Batch-Dateien mit Tastatur-Abfragen steuern

Wir haben schon gesehen, dass Batch-Dateien nützlich sein können, weil sie die Arbeitsschritte zum Ziel verkürzen. Grundsätzlich gilt dabei, dass diese Arbeiten häufiger erledigt werden sollten, da sich sonst der Aufwand für dich nicht lohnt. Einmal eine Batch-Datei schreiben und das Teil nur einmal im Leben benutzten ist Zeitverschwendung.
Häufiger ist die Situation, dass man einen Job in der Dos-Box zwar selten aber immerhin noch häufig genug erledigen muss, um einen Vorteil aus der Batch-Programmierung zu ziehen. Ich denke da an zwei Möglichkeiten.
  1. Ich kann mir den verdammten Befehl nicht merken ... muss ich jetzt Komma oder Semikolon...
  2. Oh weia ... nur nix falsch machen jetzt...
Beide Situationen haben etwas mit Nachschlagen und sich vergewissern zu tun. Es ist zwar toll, wenn du dir alles beim ersten mal merken kannst, aber ich kann das leider nicht. Deshalb habe ich mir angewöhnt, Jobs, die ich nicht auf Anhieb fehlerfrei eingetippt bekomme in Batch-Jobs zu kopieren. Das hilft solange, wie die Menge derartiger Jobs übersichtlich bleibt. Und dann braust du vielleicht irgendwann doch etwas ausgefeiltere Methoden um den passenden Batch aufzurufen. Hier helfen Batch-Jobs, die du über ein Menü steuern kannst.

Menüs, Tastatur-Abfragen und Sprungmarken in Batch Jobs

Bevor es jetzt mit Menüs los geht, noch kurz eine Anmerkung zum Editor. Ich benutze Notepad++ und für Batch-Jobs setze ich folgende Eigenschaften: Kodierung ANSI, Zeichensatz / Westeuropäisch / OEM 850. Damit erreiche ich, dass die Texte in der DOS-Konsole so angezeigt werden, wie ich sie in Notepad++ eintippe.

Jetzt das Menü-Beispiel:

echo off
:Start 
cls
echo -----------------------------------------------
echo        Tastatur-Abfragen in Batch Dateien
echo.
echo ----------------------------------------------- 
echo Taste .... Aktion 
echo   1   .... Minimiere dein Minimum
echo   2   .... Minimalisten hauen auf die Kacke
echo   3   .... Ich will nix falsch machen
echo   4   .... Immerhin auf der spendablen Seite
echo   5   .... Hey big Spender!
echo   6   .... Ahh du liebst mich! :-)
echo -----------------------------------------------
echo Eine Zahl von 1 bis 6 eingeben und mit Enter bestätigen.

Kopiere die blauen Zeilen in den Editor und speichere das Ergebnis als "menue.bat" in eine Datei. Wenn du Notepad++ benutzt, bekommst du nun die Syntax farblich hervorgehoben angezeigt und zudem kannst du sicher sein, dass tatsächlich ein Text-Format angelegt wurde und nicht irgendeine Word-Datei oder ähnliches.
In der Dos-Box kannst du das Menü starten. Das Programm löscht den Bildschirm und schreibt all das in die Dos-Box, was hinter echo steht. Beachte echo gibt es hier in drei Varianten:

  1. echo off - bewirkt das folgende echo-Zeilen nicht als echo-befehle ausgegeben werden, sondern nur der Text, der hinter echo steht wird in die Dos-Box geschrieben.
  2. echo. - bewirkt die Ausgabe einer leeren Zeile.
  3. echo irgend ein Text - gibt "irgend ein Text" aus.

Du musst nicht unbedingt  Zahlen als Menü-Befehle vorgeben, es können auch Buchstaben oder kurze Worte sein. Ich finde Zahlen praktisch, sie lassen sich mit einer Hand am Ziffern-Block eintippen.

und dann die Tastatur-Abfrage

set /P eingabe=
goto %eingabe%

Kopiere diese Abfrage gleich unter den Menü-Text im Editor und speichere die Datei. Da die Sprungmarken noch fehlen, wird sie nicht ordentlich funktionieren, wenn du versuchst sie auszuführen.
Die erste Zeile der Tastatur-Abfrage wartet auf  eine Eingabe, die mit der Enter-Taste abgeschlossen werden muss. Beachte, das das Wort eingabe eine Variable darstellt und es im Grunde gleichgültig ist, wie du diese Variable benennst. Wichtig ist das das gleiche Wort zwischen zwei Prozentzeichen in der folgenden Zeile hinter dem goto wiederholt wird. Die zweite Zeile der Tastatur-Abfrage wertet die Eingabe aus, indem sie ohne weitere Analyse versucht die passende Sprungmarke zu finden. Wenn das erfolgreich gelingt, führt das Programm all das Zeugs aus, was unter dieser Sprungmarke kodiert wurde. Wenn jedoch keine Sprungmarke gefunden werden konnte, gibt es noch kurz einen Bescheid über den Fehler und der Batch-Job wird beendet.

zu guter Letzt die Sprungmarken mit ihrem Code

:1
echo Danke für die 1
pause
goto start

:2
echo Danke für die 2
pause
goto start

:3
echo Danke für die 3
pause
goto start

:4
echo Danke für die 4
pause
goto start

:5
echo Danke für die 5
pause
goto start

:6
echo Ich dich auch... und tschüss
pause
cls

Kopiere nun auch alle Sprungmarken mit ihrem Code in die Datei. Achte darauf dass alles unter die den Abfrage-Teil kopiert wird.

Jede Sprungmarke beginnt mit einem Doppelpunkt. Darauf folgt die Bezeichnung der Sprungmarke. Im Beispiel habe ich Zahlen genommen. Ich hätte aber auch Worte wie minimalist, gehobenerminimalist, angsthase, mangönntsichjasonstnix, bigspender,  und loverboy nehmen können.
Zur Überprüfung der Struktur, habe lasse ich den Code eine Zeile ausgeben und abwarten bis der Benutzer irgendeine weitere Taste drückt. Danach geht alles zurück auf :Start. Genau, du ahnst es, start ist auch eine Sprungmarke.
Die Sprungmarke 6 ist der Ausstieg. Das Programm verabschiedet sich und löscht den Bildschrim, wenn der Pause-Befehl abgearbeitet ist.

Fazit

Die vorgestellt Lösung kann mehrere einfache Batch-Jobs für Windows in einer Datei zusammenfassen, sofern diese einzelnen Batch-Jobs ohne zusätzliche Parameter auskommen.

Anmerkung

Getestet habe ich das Beispiel unter Windows 7 SP1. Für andere Betriebssysteme mögen Anpassungen nötig sein.

Beliebte Posts aus diesem Blog

And every day the Ki greets you with another limerick

Kein Kommentar: Spiegel Online deaktiviert die Kommentare auf Google Plus