Hab ein interesanntes Tutorial auf dem Blog von Securecoders Blog gefunden, hierbei handelst es sich um eine einfache einführung ins Batchen.
jeder kann es erlernen! wo ein willa, da ein weg – Wie so schön immer gesagt wird 🙂
Mit diesem Tutorial kannst du lernen wie man richtig batcht.Erst einmal ein paar Fakten:Vorteile– Viele Befehle von Windows selbst– Viele Mˆglichkeiten mit Variablen und anderem zu programmierenNachteile– Kein gutes DesignAlso fangen wir mit den wichtigsten Sachen an…1. Die Anf‰ngeJede 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:Code:@echo offDas gibt den Anfang der Datei an. Mit „@echo on“ werden die Befehle angezeigt, was wir aber in den meisten F‰llennicht wollen.MitCode:exitwird das Programm beendet und schlie?t sich.2. TextMit dem Wort „echo“ kann ein Text eingef¸gt werden. Das sieht z.B. so aus:Code:@echo offecho Dies ist dein Text.exitAngezeigt 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 Tastedr¸ckt.Code:@echo offecho Dies ist dein Text.pauseexitTipp: Eine leere Zeile kann eingef¸gt werden, wenn du „echo.“ eingibst. (immer ohne die „“ )3. Die Spr¸ngeEine 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:Teil1echo Dies ist ein Test,:Teil2echo um batchen zu lernen.pauseexitJetzt haben wir zwei Bereiche gemacht mit unterschiedlichem Text, was uns aber noch nichts bringt, da das Programm sowiesoalles nach der Reihe liest.Darum gibt es den „goto-Befehl“. Damit kann man zu verschiedenen Bereichen ¸berspringen:Code:@echo off:Teil1echo Dies istgoto Teil3:Teil2echo ein:Teil3echo Test.pauseexitHier w¸rde jetzt stehen „Dies ist Test.“. Weil mit dem Befehl „goto Test3“ springt das Programm automatischzu dem Bereich „Test3“ und l‰sst somit den Bereich „Test2“ aus.Hier noch ein Beispiel:Code:@echo off:Teil1echo Dies ist:Teil2echo eingoto Teil1:Teil3echo Test.pauseexitDieses 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.4. Variablen setzenKommen 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 offset x= 2exitDieses Beispiel ist auch noch sinnlos aber damit kann man z.B. so etwas machen:Code:@echo off:Teil1echo Die Variable x wird auf 1 gesetzt.set x= 1goto Teil3:Teil2echo Die Variable wird auf 2 gesetzt.set x= 2:Teil3echo Wenn die Variable nicht 2 ist dann gehts zu Teil2.if not %x%==“2″ goto Teil2echo FertigpauseexitDas 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 gewesenw‰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.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 du einer Variable einen Wert zugeteilt hast (z.B. set x= Test) und du in einem Satz schreibst:Code:@echo offset x= Testecho Dies ist ein %x%.pauseexitdann steht in dem Satz „Dies ist ein Test.“ Denn wenn man die Variablen in Prozenten einklammert (%Variable%) dann wird automatisch derangegebene Wert eingegeben. Das kann man auch in Befehlen machen.5. If-S‰tzeMit If-S‰tzen kann man gute Fragen formulieren, z.B. Ist das ein Test?Code:@echo offecho Ist das ein Test?echo [j]a, [n]einset /P x=if %x%==“j“ goto Richtigif %x%==“n“ goto Falsch:Richtigecho Die Antwort ist richtig.pauseexit:Falschecho Die Antwort ist falsch.pauseexitHier 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 FalschJetzt springt man immer zum Bereich „Falsch“ au?er man gibt „j“ ein.6. Wichtige BefehleCode:CDCD ist der Befehl um das Verzeichnis zu wechselnchange directoryCHKDSKCHKDSK informiert ¸ber die Belegung der Plattencheck diskCLSCLS lˆscht den Bildschirminhaltclear screenCOPYDieser Befehl kopiert Dateien von „a“ nach „b“COPY [Pfad]+[name.exe] nach [Pfad]Bsp.: COPY c:testtest.exe a:test2DATEZeigt das eingestellte Datum tt.mm.jjDELDEL [Pfad]+[name.exe] Befehl zum lˆschendeltree (lˆschen)DIRZeigt den Inhalt des Verzeichnisses anDIR /P seitenweise, /W kurzdirectoryECHOVerzeichnis (C:dos) wird angezeigt oder nichtECHO [on off] on= angezeigt off=nicht angezeigtERASEERASE gleiche Funktion wie DEL.Lˆscht Dateien.FINDAlle Dateien mit der angebenen Endung in dem Ver-zeichnis werden aufgelistet.z.B. DIR |FIND „EXE“FORMATFormatieren = Alle Daten werden gelˆscht undFestplatte etc. wird ges‰ubert..FORMAT A: Diskette formatierenFORMAT C: Festplatte C: formatierenFORMAT A: /4 ( 5 1/4″ )FORMAT A: /S (Systemdisk. erzeugen)MDBefehl um ein neues Verzeichnis anzulegen.Bsp.: MD test (Verzeichnis test ist angelegt)make directoryMOREListet angegebene Datei Seitenweise auf.z.B. TYPE test.exe |MOREPATHPATH Pfad1;Pfad2;Pfad3SuchpfadeDruckt angegebene Datei auf lpt1/2.z.B.: PRINT test.txt lpt1RDLˆscht angegebenes Verzeichnis (mu? leer sein)remove directoryRENUmbenenen von Dateien.z.B.: REN datei1 datei2renameSORTSortieren der Dateien im Verzeichnisz.B. DIR |SORTTIMEZeigt die Systemzeit an.Zeit hh:mm:ssTYPEListet eine ASCII-Textdatei auf.z.B.: TYPE test.txt (seitenweise mit |MORE)VERZeigt die MS-DOS Versionsnummer an.VERIFYVerifizieren wenn Datein kopiert werden.z.B.: VERIFY ON (oder OFF)ASSIGNLaufwerk zuweisenz.B.: ASSIGN A=C (Umleitung auf C:)ATTRIBLese/Schreibschutzz.B.: ATTRIB [+R -R] [+A -A] [Pfad]+[test.exe];+R (Schreib-/Lˆschschutz)+A ƒnderungsatribut setzenBACKUPSicherungskopie erstellen von bestimmter Datei.BACKUP d:[Pfad][Test.exe] d:[/S][/M][/A][/D:tt.mm.jj]BREAKOb auf Ctrl-Break reagiert werden soll oder nicht.z.B.: BREAK ON (oder OFF)COMPVergleicht zwei Dateien miteinanderz.B.: COMP test1.exe text2.exeDISKCOMPvergleicht zwei DiskettenDISKCOPYKopiert vollstandige Diskette.DISKCOPY a: c:EXE2BINWandelt *.exe in „*.com oder *.bin“ um.EXE2BIN test.exe text.batGRAPHICSDient dazu Grafiken in Dos auszudrucken.KEYB GRWechseln der Tastaturbelegungz.B.: KEYB GR (oder US f¸r Amerikanische Beleg.)MODEBetriebsmodus f¸r Drucker etc.. wird angezeigtRECOVERWiederherstellung von Dateien auf einer Diskettemit defektem Sektor (Repair Kit quasi)SYSKopiern der Systemdatein auf Diskettez.B.: SYS d:TREEAuflisten eines Verzeichnisses + Dateienz.B.: TREE [d:] [/F]XCOPYZum Kopieren von Gruppen von Dateienz.B.: XCOPY C:Test A:EDLINDas gleiche wie EDIT (Editor)Viel SpassCopyrigt: SeCureCoders 2007 / Tutorial steht zur freien VerwendungMit diesem Tutorial kannst du lernen wie man richtig batcht.
Erst einmal ein paar Fakten:
Vorteile- Viele Befehle von Windows selbst- Viele Mˆglichkeiten mit Variablen und anderem zu programmieren
Nachteile- Kein gutes DesignAlso fangen wir mit den wichtigsten Sachen an…
1. Die Anf‰nge
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:
Code:
@echo off
Das gibt den Anfang der Datei an. Mit „@echo on“ werden die Befehle angezeigt, was wir aber in den meisten F‰llennicht wollen.
Mit
Code:
exit
wird das Programm beendet und schlie?t sich.2. Text
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 Tastedr¸ckt.
Code:
@echo off
echo Dies ist dein Text.pause
exit
Tipp: Eine leere Zeile kann eingef¸gt werden, wenn du „echo.“ eingibst. (immer ohne die „“ )3. Die Spr¸nge
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 sowiesoalles nach der Reihe liest.Darum gibt es den „goto-Befehl“. Damit kann man zu verschiedenen Bereichen ¸berspringen:
Code:
@echo off
:Teil1
echo Dies istgoto 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 automatischzu dem Bereich „Test3“ und l‰sst somit den Bereich „Test2“ aus.
Hier noch ein Beispiel:
Code:
@echo off
:Teil1
echo Dies ist
:Teil2
echo eingoto 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.4. Variablen setzen
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= 1goto 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 Fertigpause
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 gewesenw‰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.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 du einer Variable einen Wert zugeteilt hast (z.B. set x= Test) und du in einem Satz schreibst:
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 derangegebene Wert eingegeben. Das kann man auch in Befehlen machen.5. If-S‰tze
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]einset /P x=
if %x%==“j“ goto Richtigif %x%==“n“ goto Falsch
:Richtig
echo Die Antwort ist richtig.pauseexit
:Falsch
echo Die Antwort ist falsch.pauseexit
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.6. Wichtige Befehle
Code:
CDCD ist der Befehl um das Verzeichnis zu wechselnchange directory
CHKDSKCHKDSK informiert ¸ber die Belegung der Plattencheck disk
CLSCLS lˆscht den Bildschirminhaltclear screen
COPYDieser Befehl kopiert Dateien von „a“ nach „b“COPY [Pfad]+[name.exe] nach [Pfad]Bsp.: COPY c:testtest.exe a:test2
DATEZeigt das eingestellte Datum tt.mm.jj
DELDEL [Pfad]+[name.exe] Befehl zum lˆschendeltree (lˆschen)
DIRZeigt den Inhalt des Verzeichnisses anDIR /P seitenweise, /W kurzdirectory
ECHOVerzeichnis (C:dos) wird angezeigt oder nichtECHO [on off] on= angezeigt off=nicht angezeigt
ERASEERASE gleiche Funktion wie DEL.Lˆscht Dateien.
FINDAlle Dateien mit der angebenen Endung in dem Ver-zeichnis werden aufgelistet.z.B. DIR |FIND „EXE“
FORMATFormatieren = Alle Daten werden gelˆscht undFestplatte etc. wird ges‰ubert..FORMAT A: Diskette formatieren FORMAT C: Festplatte C: formatierenFORMAT A: /4 ( 5 1/4″ ) FORMAT A: /S (Systemdisk. erzeugen)
MDBefehl um ein neues Verzeichnis anzulegen.Bsp.: MD test (Verzeichnis test ist angelegt)make directory
MOREListet angegebene Datei Seitenweise auf.z.B. TYPE test.exe |MORE
PATHPATH Pfad1;Pfad2;Pfad3Suchpfade
PRINTDruckt angegebene Datei auf lpt1/2.z.B.: PRINT test.txt lpt1
RDLˆscht angegebenes Verzeichnis (mu? leer sein)remove directory
RENUmbenenen von Dateien.z.B.: REN datei1 datei2rename
SORTSortieren der Dateien im Verzeichnisz.B. DIR |SORT
TIMEZeigt die Systemzeit an.Zeit hh:mm:ss
TYPEListet eine ASCII-Textdatei auf.z.B.: TYPE test.txt (seitenweise mit |MORE)
VERZeigt die MS-DOS Versionsnummer an.
VERIFYVerifizieren wenn Datein kopiert werden.z.B.: VERIFY ON (oder OFF)
ASSIGNLaufwerk zuweisenz.B.: ASSIGN A=C (Umleitung auf C:)
ATTRIBLese/Schreibschutz z.B.: ATTRIB [+R -R] [+A -A] [Pfad]+[test.exe]; +R (Schreib-/Lˆschschutz) +A ƒnderungsatribut setzen
BACKUPSicherungskopie erstellen von bestimmter Datei.BACKUP d:[Pfad][Test.exe] d:[/S][/M][/A][/D:tt.mm.jj]
BREAKOb auf Ctrl-Break reagiert werden soll oder nicht.z.B.: BREAK ON (oder OFF)
COMPVergleicht zwei Dateien miteinanderz.B.: COMP test1.exe text2.exe
DISKCOMPvergleicht zwei Disketten
DISKCOPYKopiert vollstandige Diskette.DISKCOPY a: c:
EXE2BINWandelt *.exe in „*.com oder *.bin“ um.EXE2BIN test.exe text.bat
GRAPHICSDient dazu Grafiken in Dos auszudrucken.
KEYB GRWechseln der Tastaturbelegungz.B.: KEYB GR (oder US f¸r Amerikanische Beleg.)
MODEBetriebsmodus f¸r Drucker etc.. wird angezeigt
RECOVERWiederherstellung von Dateien auf einer Diskettemit defektem Sektor (Repair Kit quasi)
SYSKopiern der Systemdatein auf Diskettez.B.: SYS d:
TREEAuflisten eines Verzeichnisses + Dateienz.B.: TREE [d:] [/F]
XCOPYZum Kopieren von Gruppen von Dateien z.B.: XCOPY C:Test A:
EDLINDas gleiche wie EDIT (Editor)
Viel SpassCopyrigt: SeCureCoders 2007 / Tutorial steht zur freien Verwendung