Um Batch programmieren zu lernen, gibt es sicherlich viele Möglichkeiten, doch der Einstieg ist schnell geschafft
Batch lernen – Einige Grundlagen
Die Anfänge in Batch
Jede Batch Datei wird im normalen WordPad geschrieben und mit der Endung .bat oder .cmd gespeichert. (Speichern unter > Name.bat / Name.cmd > Speichern)
Am Anfang der Datei muss immer stehen:
@echo off
Das gibt den Anfang der Datei an. Mit “@echo on” werden die Befehle angezeigt, was wir aber in den meisten Fällen
nicht wollen.
Mit
exit
wird das Programm beendet und schließt sich.
Text in Batch
Mit dem Wort “echo” kann ein Text eingefügt werden. Das sieht z.B. so aus:
Code:
@echo off echo Dies ist dein Text. exit
Angezeigt wird dann natürlich nur “Dies ist dein Text.” der Rest bleibt unsichtbar.
Aber wenn wir das Programm starten, würde das Fenster nur kurz erscheinen und sich sofort wieder schließen.
darum schreiben wir noch das Wort “pause” unter den Text, damit das Programm wartet bis der User eine Taste
drückt.
@echo off echo Dies ist dein Text. pause exit
Tipp: Eine leere Zeile kann eingefügt werden, wenn Sie “echo.” eingeben. (immer ohne die “” )
Die Sprünge in Batch
Eine BAT Datei liest die Befehle immer von oben nach unten der Reihe nach, aber da gibt es auch einen Trick.
Man kann Bereiche markieren, indem man “:Name” schreibt. Alles was darunter steht gehört zu dem Bereich “Name”.
@echo off :Teil1 echo Dies ist ein Test, :Teil2 echo um batchen zu lernen. pause exit
Jetzt haben wir zwei Bereiche gemacht mit unterschiedlichem Text, was uns aber noch nichts bringt, da das Programm sowieso
alles nach der Reihe liest.
Darum gibt es den “goto-Befehl”. Damit kann man zu verschiedenen Bereichen überspringen:
@echo off :Teil1 echo Dies ist goto Teil3 :Teil2 echo ein :Teil3 echo Test. pause exit
Hier würde jetzt stehen “Dies ist Test.”. Weil mit dem Befehl “goto Test3” springt das Programm automatisch
zu dem Bereich “Test3” und lässt somit den Bereich “Test2” aus.
Hier noch ein Beispiel:
@echo off :Teil1 echo Dies ist :Teil2 echo ein goto Teil1 :Teil3 echo Test. pause exit
Dieses Programm würde nie enden, da es von “Teil1” auf “Teil2” geht und dann wieder wegen “goto Teil1” zu “Teil1”
springt und das wiederholt sich andauernd.
Tipp: Die Konsole kann man mit [STRG+TAB] sofort schließen.
Variablen setzen in Bash
Kommen wir zu dem etwas schwierigerem Teil, den aber auch jeder meistern kann.
Mit “set [Variable]= [Eingabe]” kann man eine Variable definieren. Hier ein Beispiel:
@echo off set x= 2 exit
Dieses Beispiel ist auch noch sinnlos aber damit kann man z.B. so etwas machen:
@echo off :Teil1 echo Die Variable x wird auf 1 gesetzt. set x= 1 goto Teil3 :Teil2 echo Die Variable wird auf 2 gesetzt. set x= 2 :Teil3 echo Wenn die Variable nicht 2 ist dann gehts zu Teil2. if not %x%=="2" goto Teil2 echo Fertig pause exit
Das hier ist schon etwas komplexer. Folgendes passiert hier:
- Erst steht da “Die Variable x wird auf 1 gesetzt.”
- Dann wird durch “set x= 1” dem X der Wert 1 zugefügt (kann man natürlich nach belieben ändern).
- Jetzt wird durch “goto Teil3” zum Bereich “Teil3” gesprungen.
- Dort steht “Wenn die Variable nicht 2 ist dann gehts zu Teil2.”
- Hier wird ein If-Satz verwendet (dazu kommen wir später) und es wird gefragt: wenn die Variable X nicht 2 ist, dannwird zu “Teil2” gesprungen.
- Und da dem X erst der Wert 1 zugeteilt worden ist, ist es eben nicht 2. Wenn es schon 2 gewesen wäre, würde er nicht zu “Teil2” springen.
- In “Teil2” steht dann “Die Variable wird auf 2 gesetzt.”
- Jetzt wird durch “set x= 2” das X auf 2 gesetzt, wie am Anfang auf 1.
- Es geht wieder zum “Teil3”, da das Programm ja in der Reihenfolge arbeitet.
- Das Programm fragt wieder ob X gleich 2 ist, was diesmal der Fall ist und es wird nicht zu “Teil2” zurückgesprungen.
- Zum Schluss steht da “Fertig” und es wird geschlossen.
WICHTIG: Wenn Sie einer Variable einen Wert zugeteilt haben (z.B. set x= Test) und Sie in einem Satz schreiben:
@echo off set x= Test echo Dies ist ein %x%. pause exit
dann steht in dem Satz “Dies ist ein Test.” Denn wenn man die Variablen in Prozenten einklammert, (%Variable%) dann wird automatisch der
angegebene Wert eingegeben. Das kann man auch in Befehlen machen.
If-Sätze in Bash
Mit If-Sätzen kann man gute Fragen formulieren, z.B. Ist das ein Test?
@echo off echo Ist das ein Test? echo [j]a, [n]ein set /P x= if %x%=="j" goto Richtig if %x%=="n" goto Falsch :Richtig echo Die Antwort ist richtig. pause exit :Falsch echo Die Antwort ist falsch. pause exit
Hier kann der User nun etwas eingeben. Vorgegeben ist “j” und “n” und es wird gefragt:
Wenn die Variable x “j” ist, dann gehts zum Bereich Richtig und wenn es “n” ist zu Falsch. Dann endet das Programm.
Tipp: Bei “echo [j]a, [n]ein” kann man beliebiges oder nichts reinschreiben.
Das gleiche geht natürlich auch mit “not”
if not %x%=="j" goto Falsch
Jetzt springt man immer zum Bereich “Falsch” außer man gibt “j” ein.
Wichtige Befehle in Bash
CD CD ist der Befehl um das Verzeichnis zu wechseln change directory CHKDSK CHKDSK informiert über die Belegung der Platten check disk CLS CLS löscht den Bildschirminhalt clear screen COPY Dieser Befehl kopiert Dateien von "a" nach "b" COPY [Pfad]+[name.exe] nach [Pfad] Bsp.: COPY c:\test\test.exe a:\test2 DATE Zeigt das eingestellte Datum tt.mm.jj DEL DEL [Pfad]+[name.exe] Befehl zum löschen deltree (löschen) DIR Zeigt den Inhalt des Verzeichnisses an DIR /P seitenweise, /W kurz directory ECHO Verzeichnis (C:\dos\) wird angezeigt oder nicht ECHO [on off] on= angezeigt off=nicht angezeigt ERASE ERASE gleiche Funktion wie DEL.Löscht Dateien. FIND Alle Dateien mit der angebenen Endung in dem Ver- zeichnis werden aufgelistet. z.B. DIR |FIND "EXE" FORMAT Formatieren = Alle Daten werden gelöscht und Festplatte etc. wird gesäubert.. FORMAT A: Diskette formatieren FORMAT C: Festplatte C: formatieren FORMAT A: /4 ( 5 1/4" ) FORMAT A: /S (Systemdisk. erzeugen) MD Befehl um ein neues Verzeichnis anzulegen. Bsp.: MD test (Verzeichnis test ist angelegt) make directory MORE Listet angegebene Datei Seitenweise auf. z.B. TYPE test.exe |MORE PATH PATH Pfad1;Pfad2;Pfad3 Suchpfade PRINT Druckt angegebene Datei auf lpt1/2. z.B.: PRINT test.txt lpt1 RD Löscht angegebenes Verzeichnis (muß leer sein) remove directory REN Umbenenen von Dateien. z.B.: REN datei1 datei2 rename SORT Sortieren der Dateien im Verzeichnis z.B. DIR |SORT TIME Zeigt die Systemzeit an. Zeit hh:mm:ss TYPE Listet eine ASCII-Textdatei auf. z.B.: TYPE test.txt (seitenweise mit |MORE) VER Zeigt die MS-DOS Versionsnummer an. VERIFY Verifizieren wenn Datein kopiert werden. z.B.: VERIFY ON (oder OFF) ASSIGN Laufwerk zuweisen z.B.: ASSIGN A=C (Umleitung auf C:) ATTRIB Lese/Schreibschutz z.B.: ATTRIB [+R -R] [+A -A] [Pfad]+[test.exe]; +R (Schreib-/Löschschutz) +A Änderungsatribut setzen BACKUP Sicherungskopie erstellen von bestimmter Datei. BACKUP d:[Pfad][Test.exe] d:[/S][/M][/A][/D:tt.mm.jj] BREAK Ob auf Ctrl-Break reagiert werden soll oder nicht. z.B.: BREAK ON (oder OFF) COMP Vergleicht zwei Dateien miteinander z.B.: COMP test1.exe text2.exe DISKCOMP vergleicht zwei Disketten DISKCOPY Kopiert vollstandige Diskette. DISKCOPY a: c: EXE2BIN Wandelt *.exe in "*.com oder *.bin" um. EXE2BIN test.exe text.bat GRAPHICS Dient dazu Grafiken in Dos auszudrucken. KEYB GR Wechseln der Tastaturbelegung z.B.: KEYB GR (oder US für Amerikanische Beleg.) MODE Betriebsmodus für Drucker etc.. wird angezeigt RECOVER Wiederherstellung von Dateien auf einer Diskette mit defektem Sektor (Repair Kit quasi) SYS Kopiern der Systemdatein auf Diskette z.B.: SYS d: TREE Auflisten eines Verzeichnisses + Dateien z.B.: TREE [d:] [/F] XCOPY Zum Kopieren von Gruppen von Dateien z.B.: XCOPY C:\Test\ A: EDLIN Das gleiche wie EDIT (Editor)