Batch lernen – So gelingt der Anfang

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

Code:
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.

Code:
@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”.

Code:
@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:

Code:
@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:

Code:
@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:

Code:
@echo off

set x= 2

exit

Dieses Beispiel ist auch noch sinnlos aber damit kann man z.B. so etwas machen:

Code:
@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.”
[/checklist]
  • Dann wird durch “set x= 1” dem X der Wert 1 zugefügt (kann man natürlich nach belieben ändern).
[/checklist]
  • Jetzt wird durch “goto Teil3” zum Bereich “Teil3” gesprungen.
[/checklist]
  • Dort steht “Wenn die Variable nicht 2 ist dann gehts zu Teil2.”
[/checklist]
  • 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. 
[/checklist]
  • 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.
[/checklist]
  • In “Teil2” steht dann “Die Variable wird auf 2 gesetzt.”
[/checklist]
  • Jetzt wird durch “set x= 2” das X auf 2 gesetzt, wie am Anfang auf 1.
[/checklist]
  • Es geht wieder zum “Teil3”, da das Programm ja in der Reihenfolge arbeitet.
[/checklist]
  • Das Programm fragt wieder ob X gleich 2 ist, was diesmal der Fall ist und es wird nicht zu “Teil2” zurückgesprungen.
[/checklist]
  • Zum Schluss steht da “Fertig” und es wird geschlossen.
[/checklist] Tipp: Mit z.B. “set /P x= ” kann der User etwas eingeben und dann wird das Eingegebene der Variable als Wert zugeteilt, wie oben 1 und 2.

WICHTIG: Wenn Sie einer Variable einen Wert zugeteilt haben (z.B. set x= Test) und Sie in einem Satz schreiben:

Code:
@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?

Code:
@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”

Code:
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)

 

About Manuela

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert