BATCH-TUTORIAL für Einsteiger

Hier ein Tutorial, das euch lehrt, Batch zu programmieren.

Dieses Tutorial ist hauptsächlich an Leute gerichtet, die vorher noch nichts mit Programmierung am Hut hatten. Los geht's!

 

1. Was ist CMD?

CMD ist die Windows-Eingabeaufforderung. Man öffnet sie, indem man in der Windows-Suche "CMD" oder "Eingabeaufforderung" eintippt. Man erhält ein Fenster, in das man nun verschiedene Befehle eingeben kann, z.B. echo Hallo! um sich den Text Hallo! ausgeben zu lassen. Diese Befehle können auch automatisch ausgeführt werden, indem man sie vorher in eine Batch-Datei schreibt.

Eine Batch-Datei funktioniert wie eine Text-Datei, man kann sie ganz einfach mit dem Editor öffnen.

 

2. Die Datei erstellen

Um eine Batch-Datei zu erstellen, begibt man sich in einen beliebigen Ordner, klickt einmal mit der rechten Maustaste auf ein freies Feld, wählt Neu und Textdokument. Man kann den Namen nun beliebig ändern. Das einzig wichtige ist, das am Ende des Namens .bat stehen muss, z.B. Timer.bat. Sobald ihr auf Enter drückt, erscheint eine Fehlermeldung, die euch davor warnt, dass die Datei kaputtgehen könnte, wenn man die Dateiendung von .txt (Textdokument) in .bat (Batch-Datei) ändert. In der Datei steht aber noch nichts drin, deswegen klickt ihr auf Ja und ignoriert die Meldung. Ein weiterer Rechtsklick auf die Datei und anschließend ein Mausklick auf Bearbeiten genügt auch schon, um die Datei zu bearbeiten.

 

3. Erste Schritte

Zunächst schreiben wir einfach nur pause in die Datei. Dieser Befehl bewirkt, dass die Datei die Schritte vor diesem Befehl ausführt, dann wartet, bis ihr eine beliebige Taste drückt und somit den Vorgang fortsetzt. Wir schließen das Fenster und klicken auf die Datei.

Folgendes wird angezeigt:

Der Dateipfad, in dem die Datei sich befindet > pause

Das wird bei jedem Befehl, den ihr ausführt zuerst angezeigt. Erst kommt der Dateipfad, dann der ausgeführte Befehl. Wenn wir nicht wollen, dass dieser Text jedes Mal angezeigt wird, verrate ich gleich noch einen kleinen Trick.

Drücken Sie eine beliebige Taste . . .

Dieser Text wird vom pause-Befehl ausgegeben, d.h. wenn der Eingabeaufforderung pause zugewiesen wird, gibt es diesen Text aus und wartet anschließend, bis ihr eine Taste gedrückt habt. Wenn wir auch hier nicht wollen, dass der Text angezeigt wird, verrate ich in 5. einen Trick.

 

4. Befehle nicht anzeigen lassen

Wenn wir nicht wollen, dass bei jedem Mal, wenn wir einen Befehl ausführen, der Dateipfad und der Befehl angezeigt wird (siehe 3.), so können wir zu dem Zeitpunkt, ab dem das nicht mehr angezeigt werden soll, @echo off in eine neue Zeile schreiben. Wenn wir wollen, dass dieser Text wieder angezeigt wird, schreiben wir @echo on. Wenn wir überprüfen wollen, ob echo an- oder ausgeschaltet ist, schreiben wir nur echo. Beispiel:

@echo off Schaltet echo aus.

echo Gibt aus, dass echo ausgeschaltet ist.

@echo on Schaltet echo an.

echo Gibt aus, dass echo eingeschaltet ist.

pause Pausiert CMD, bis ihr eine Taste drückt.

Danach schließt sich das Fenster, da keine weiteren Befehle vorliegen.

 

5. Textausgabe von Befehlen nicht anzeigen

Drücken Sie eine beliebige Taste ...

Der Text, der erscheint, wenn man pause eingibt. Bei den meisten Befehlen wird irgendein Text ausgegeben (nicht zu verwechseln mit echo). Wenn wir nicht wollen, dass dieser Text angezeigt wird, schreiben wir hinter den zugehörigen Befehl >nul, z.B.: pause >nul. Wenn man das also eingibt, wartet CMD zwar, bis man eine Taste gedrückt hat, aber es wird kein Text angezeigt. Das funktioniert zwar mit allen Befehlen, aber es macht mit manchen einfach keinen Sinn! Wie zum Beispiel mit einer Erweiterung des echo-Befehles.

 

6. Text ausgeben lassen

Wohl eines der bekanntesten und einfachsten CMD-Befehle. Man gibt echo ein, und danach den Text, der angezeigt werden soll, z.B. echo Hallo! um Hallo! anzuzeigen. Manche Zeichen können aber nicht angezeigt werden. Wenn man diese eingibt, beendet sich die Datei. Ein Beispiel -> |. Um dieses Zeichen dennoch anzeigen zu können, schreibt man direkt davor ein ^. Zum Beispiel so:

echo Hallo ^| Hey

Wenn ihr das "Dach" weglassen würdet, würde sich das Fenster sofort beenden. Natürlich wird das "Dach" nicht mit angezeigt.

ä, ö, ü, ß, etc. werden als andere Zeichen dargestellt. Wie man diesen Fehler behebt, erkläre ich euch gleich noch.

Ihr könnt auch eine Leerzeile ausgeben lassen, mit echo. (mit dem Punkt), da nur echo ja schon für die Kontrolle vorgesehen ist, ob echo an oder aus ist.

 

7. Eurer Batch-Datei Farbe verleihen!

Natürlich kann der Text nicht nur grau und der Hintergrund nicht nur schwarz angezeigt werden. Das ist dann auf Dauer ja auch ein bisschen langweilig. Um eurer Batch-Datei Farbe zu verleihen, geben wir in eine neue Zeile color Hintergrundfarbe Textfarbe ein. Und zwar wie folgt:

0 = Schwarz, 1 = Dunkelblau, 2 = Dunkelgrün, 3 = Blaugrün, 4 = Dunkelrot, 5 = Lila, 6 = Ocker, 7 = Hellgrau, 8 = Dunkelgrau, 9 = Blau, A = Grün, B = Zyan, C = Rot, D = Magenta, E = Gelb, F = Weiß. Wenn wir also wollen, dass die Schrift dunkelgrau und der Hintergrund weiß ist, geben wir color f8 ein.

 

8. Ein eigener Titel

Noch etwas einfaches. Normalerweise, wenn ihr eure Batch-Datei startet, wird als Überschrift C:\WINDOWS\system32\cmd.exe angezeigt. Man kann aber auch eine eigene Überschrift eingeben. Das geht ganz einfach, indem man am Anfang der Batch-Datei title und dann die Überschrift schreibt. Eine kleine Batch-Datei mit den Befehlen, die wir bis jetzt gelernt haben:

@echo off Ausgeführte Befehle werden ab jetzt nicht mehr angezeigt

title Weisser Bildschirm Die Überschrift lautet "Weisser Bildschirm"

echo Druecke eine beliebige Taste, damit der Hintergrund weiss wird! Zeigt den Text an

pause >nul Wartet bis ihr eine Taste drückt, zeigt aber keinen Text an

color f8 Ändert die Farben

pause >nul Wartet bis ihr eine Taste drückt

Kein weiterer Befehl liegt vor, also wird die Batch-Datei danach beendet.

Ich würde euch empfehlen, pause >nul immer ans Ende zu schreiben, da sonst die Batch-Datei direkt beendet wird und nicht irgendwie wartet oder so.

 

9. Erweiterungen des echo-Befehles


9.1 Text einer Datei ausgeben lassen

Mit Batch kann man auch den Text einer Textdatei ausgeben lassen (Textdateien, die Batch unterstützt, sind z.B. .txt oder .bat). Dazu erstellen wir erst einmal ein neues Textdokument im gleichen Ordner der Batch-Datei und nennen sie Textdatei zum Test.txt. Man kann sie natürlich auch beliebig anders benennen. Nun gehen wir in die Batch-Datei und geben type "Textdatei zum Test.txt" ein.

type Befehl zum Ausgeben von Texte, die in Dateien enthalten sind

"[...]Wenn in dem Namen der Textdatei ein Leerzeichen vorkommt, so muss man immer Anführungszeichen vor und nach dem Dateinamen setzen. Wenn man das nicht tut, denkt CMD, es soll die Datei Textdatei ausgeben, findet sie nicht und denkt, zum wäre schon ein neuer Befehl, was er aber nicht ist.

Textdatei zum Test.txt Legt fest, welche Textdatei ausgegeben werden soll.

In die Textdatei schreiben wir z.B.:

Dies ist eine Textdatei

blablabla

mehr Text

asdasdasdasdasdasdasdlol

... und Batch gibt uns genau diesen Text aus.


9.2 Zwischenablage setzen

Um die Windows-Zwischenablage zu einem bestimmten Text zu setzen, schreibt man ganz normal echo, dann den Text, den man kopieren will und anschließend | clip. Das "clip" bewirkt, dass der Text nicht ausgegeben, sondern in das Clipboard kopiert wird. Beispiel: echo Hallo! | clip

 

10. Den Nutzer entscheiden lassen

Jetzt etwas komplexeres.

Wenn der Nutzer (als Beispiel) A drückt, soll das passieren. Wenn er B drückt, soll dies passieren. Und wenn er C drückt, soll jenes passieren. Das macht man folgendermaßen:

choice /c abc

choice Der Befehl, um zwischen mehreren Möglichkeiten zu unterscheiden

/c Ein Unterbefehl, der den Nutzer entscheiden lässt

abc Der Reihe nach die Buchstaben, die der Nutzer zur Auswahl hat, in diesem Fall A, B und C.

In diesem Fall sind es drei Buchstaben. Je nachdem, was der Nutzer eingegeben hat, gibt es also drei Möglichkeiten. Den Buchstaben, den der Nutzer ausgibt, wird in %errorlevel% zwischengespeichert. Der if-Befehl lässt Batch nur etwas tun, wenn bestimmte Bedingungen erfüllt werden. Also:

if Wenn...

%errorlevel% Was der Nutzer eingibt. Hier 3 Möglichkeiten (A, B, C) also lautet der Platzhalter entweder 1, 2 oder 3 (nach der Reihenfolge).

== ...ist genau gleich bzw. entspricht...

Die Nummer, die eingegeben werden soll, damit...

echo Hallo! ...hier die Aktion ausgeführt werden kann.

Ein Beispiel:

@echo off

choice /c asdf

if %errorlevel% == 1 echo Sie haben A gedrueckt.

if %errorlevel% == 2 echo Sie haben S gedrueckt.

if %errorlevel% == 3 echo Sie haben D gedrueckt.

if %errorlevel% == 4 echo Sie haben F gedrueckt.

pause

Wenn der Nutzer also beispielsweise F drückt, wird "Sie haben F gedrueckt." ausgegeben.

Natürlich kann danach nicht nur Text ausgegeben werden.