[ Batchman ]

Batch-Dateien selbstgemacht

Einleitung
Batch-Befehle
Praktische Beispiele
Tips & Tricks

Einleitung: 

Auch unter Windows 95/98 sind Batchdateien (Stapelverarbeitungsdateien) durchaus sinnvoll. Ich will hier anhand konkreter Beispiele die wichtigsten Kommandos kurz erläutern und Anregungen geben. 

Das beste Beispiel ist das "CD-Backup", welches zum größten teil durch Batch-Dateien gesteuert wird. Damit läßt sich u.a. eine komplette Windows-Installation unter DOS sichern und wieder restaurieren, inklusive der langen Dateinamen und allen Einstellungen!

Doch nun zu den Befehlen, welche in Batch-Dateien verwendet werden können, sowie weiter unten zu praktischen Beispielen.

Batch-Befehle:

Es wird im Batch-Dateien nicht nach Groß- & Kleinschreibung unterschieden!

Optional empfiehlt sich das laden des Teibers "ansi.sys" in der Config.sys mit dem Befehl: 
c:\windows\command\ansi.sys

sowie von des Tastaturpuffers "doskey.com" in der Autoexec.bat. mit dem Befehl:
c:\windows\command\doskey.com
(Bedienung mit den Pfeiltasten.)


Break - Schaltet (zusätzliche Überwachung für [Strg-C] ein oder aus. (Mit [Strg-C] läßt sich jede Batch-Datei abbrechen.)

Syntax: 
Break on - Abbruchmöglichkeit intensivieren
Break - Statusausgabe des Break-Befehls (On/Off)
Break off - Abbruchmöglichkeit normalisieren

Vorteile: 
+ Läßt Stapeldateien im allgemeinen besser abbrechen
+ Läßt sich auch in der config.sys für die gesamte PC-Sitzung einstellen.

Nachteile:
- Läßt Stapeldateien nicht generell abbrechen.


Call - Ruft ein Stapelverarbeitungsprogramm von einem anderen Programm aus auf und führt danach die erstere an der Stelle fort..

Syntax:
Call stapel.bat parameter1 ... parameterX - Rufe Stapeldatei mit Parametern
Call stapel.bat - Rufe entsprechende Stapeldatei ohne Parameter

Beispiel: 
@echo off
Rem batch1.bat bei der Arbeit
Echo Der neueste Krimi! 1. Teil
Echo.
Echo Werbepause !
Pause
Call batch2.bat
Echo.
Echo Der neueste Krimi! 2.Teil
Echo.
Echo Ende

-----------------------------

@echo off
Rem batch2.bat bei der Arbeit
Echo Werbung bildet?!
Echo Kaufen Sie jetzt!
Echo Schon wieder ein Bier aus dem Kühlschrank holen?
Echo Gleich geht der Krimi weiter...!
Pause


Vorteile:
+ Call ruft eine andere Stapeldatei, ohne Extra-Speicherplatz zu verbrauchen
+ Call kann in der aufgerufenden Stapeldatei weitere Calls absetzen (Schachtelung)
+ Call gibt die Ablaufkontrolle wieder an die Anfangsdatei zurück. Dies ist insbesondere bei  Verwendung aus dem For-Befehl heraus für geschachtelte Schleifenbildungen gut.
+ Bei Call-Aufrufen bleibt der Umgebungsbereich für beide Stapeldateien derselbe (gut um Set-Schalter zu setzen)

Nachteile:
- In Verbindung mit Call funktionieren keine Umleitungen (weder >,<,>> noch | ).


Choice - Wartet auf die Auswahl des Benutzers der angezeigten Optionen.

Syntax:
Choice - Wartet auf Tastendruck, standardmäßige Auswahlanzeige ist [J,N]?.
Choice Text - Wartet auf Tastendruck, Auswahlanzeige mit dem Text und anschließendem [J,N}?.
Choice /C:abc - (Charakter) Wartet auf Tastendruck, Auswahlanzeige gemäß [a,b,c,]?. Falls diese Option fehlt, wird /C:JN (respektive /C:jn) angenommen, also eine einfache Ja/Nein-Abfrage.
Choice /N - (Noprompt) Wartet nur auf einen erlaubten Tastendruck, die Auswahlanzeige erfolgt jedoch nicht.
Choice /S - (Sensitiv) Wartet nur auf einen Tastendruck, akzeptiert nur Groß- oder Kleinbuchstaben für die Auswahltasten - je nach Vorgabe. Im Standardfall also nur [Umschalt-J] oder [Umschalt-N].
Choice /T:a,x - (Time) Wartet nur x Sekunden auf Tastendruck, sonst wird Zeichen a als antwort gewertet. Notwendig ist hier die passende Option /C, die die Taste [a] als Auswahl anbietet. [x]= 0 -99 Sekunden.

Beispiele:
@echo off
Choice Nun aber mal ran an die Tasten: /C:123
If Errorlevel 255 goto Fehler
If Errorlevel 3 goto Punktdrei
If Errorlevel 2 goto Punktzwei
If Errorlevel 1 goto Punkteins
If Errorlevel 0 goto Fehldruck
:Fehler
Echo Fehlerbedingung!
goto ende
:Punktdrei
Echo Sie haben Taste 3 gedrückt!
goto ende
:Punktzwei
Echo Sie haben Taste 2 gedrückt!
goto ende
:Punkteins
Echo Sie haben Taste 1 gedrückt!
goto ende
:Fehldruck
Echo Sie haben [Strg+C] gedrückt und die Stapeldatei abgebrochen! 
goto ende
:ende

-------------------------

@echo off
:Anfang
Choice /c:jnw Laufwerk c: auflisten? [J]a, [N]ein, [W]eiter: /T:n,10
If Errorlevel 3 goto Punktdrei
If Errorlevel 2 goto Punktzwei
If Errorlevel 1 goto Punkteins
:Punktdrei
goto Anfang
:Punktzwei
echo Dann eben nicht!
goto ende
:Punkteins
dir c:\ /p
goto ende
:ende

Vorteile:
+ Benutzerauswahl (Menüs) in Stapeldateien nun auch vom Betriebssystem unterstützt.
+ Statt Benutzerauswahl kann auch eine bestimmte Wartezeit mit vorbestimmten Standardangaben  gesetzt werden.
+Weist die nicht vorgesehenen Tastendrücke von sich aus zurück.
Errorlevels einfach zu bestimmen.

Nachteile:
- Nur als externes Programm realisiert (muß also mit Pfadangaben aufgerufen werden).
- Keine Mausunterstützung

Echo - Zeigt Meldungen an oder schaltet die Befehlsanzeige ein/aus.

Syntax:
Echo off - Echo wird ausgeschaltet.
Echo on - Echo wird eingeschaltet.
Echo - Status des Echo-Befehls wird ausgegeben.
Echo [ASCII-7] - Ein Piepser wird ausgegeben.
( [Alt]-Taste+[Num7]-Taste auf dem Ziffenblock bzw. [Strg]+[G] )
Echo. - Eine Leerzeile wird ausgegeben.
Echo Text - Der Text wird ausgegeben.
Echo Text > Datei - Der Text wird in eine Datei geschrieben.

Vorteile:
+ Echo kann Text, Leerzeilen und Linienzeichen ausgeben.
+ Echo kann ASCII-Steuerzeichen annehmen - etwa das erwähnte Bell (ASCII-7) oder Form  Feed, der Seitenvorschub für den Drucker (ASCII-12).
+ Echo kann ANSI-Sequenzen mithaben und diese bei geladener ansi.sys interpretieren lassen.
+ Insbesondere kann Echo die Umleitung > bzw. die Überleitung | vornehmen. Bei der Umleitung ist es sinnvoll, in eine Datei, auf ein Gerät oder auch NUL auszuleiten. Sollen Umleitungszeichen angezeigt werden, so müssen Sie in Anführungszeichen stehen!
+ Echo kann an- und ausgeschaltet werden - gut für Test- und Regulärbetrieb.
+ Echo läßt sich auch als Kommentarzeile anwenden:
Echo text > NUL

Nachteile:
- Echo hat keine einfache Lösch- und Positionierungsfuktion (Außer mit ansi.sys)
- Die Echo-anzeige kann mehr als 79 Zeichen annehmen, doch müssen Sie dabei selbst den Zeilenumbruch berücksichtigen.

For - Führt einen Befehl für jede einzelne Datei eines Satzes von Dateien aus.

Syntax:
FOR %%argument IN (Liste) DO Befehl
- Dabei bedeutet:
For - Erstes Befehlswort für den For-Befehl
%%argument - Variable für den Schleifendurchgang (mit zwei %-Zeichen und einem Buchstaben).
IN - Zweites Befehlswort für den For-Befehl: das die Variable von ihrer Argumentliste trennt.
(Liste) - Argumentenliste für den For-Befehl: Die Variable nimmt der Reihe nach die Werte in dieser Liste an. Als Listenelemente kommen numerische oder benannte Parameter, Datei(grupp)en, Zeichenketten oder Befehle in Frage.
DO - Drittes Befehlswort für den For-Befehl: Trennt die Liste vom Befehl.
Befehl - beliebiger Befehl, der auf die Variable für den Schleifendurchgang zurückgreifen kann.

Beispiele:

@echo off
For %%f In (c:\batch\*.bat c:\bat\*.bat) Do Copy %%f a:
Rem Dieser For-Befehl kopiert alle *.bat-Dateien aus den Verzeichnissen
Rem c:\batch und c:\bat nach Laufwerk a:\ .

-----------------------

@echo off
For %%d In (1 2 3 4 5 6 7 8 9 10 ) Do Md spiel%%d
Rem Dieser For-Befehl kreiert 10 Unterverzeichnisse mit den Namen 
Rem Spiel 1 bis Spiel 10.

Vorteile:
+ Argumente sind als Zählschleife oder als kopfgesteuerte Schleife einzusetzen.
+ Befehle können auf  alle Elemente einer datei(gruppen)liste angewendet werden - etwa als Del *.* (ohne Abfrage) sowie Type *.*
+ Verzeichnisse können (nur mit Pfad) abgeprüft werden.
+ Schleifenschachtelung (aber nur mit dem Call- oder dem Command-Befehl)

Nachteile:
- Umleitung funktioniert oft nicht wie gewollt.
- Es kann nur ein Befehl abgestzt werden (keine umstandslose Schachtelung)
- Keine einfache Zählschleife zu realisieren
- Bestimmte Zeichen werden nicht als Argument angenommen [/]
- Beschränkung auf 127 Kommandozeichen kommt einschränkend zur Geltung (etwa bei Prüfung zusammengesetzter Bedingungen).

Weiteres:
-> Wenn man den For-Befehl in Batch-Dateien einsetzt, sind für das Argument zwei %-Zeichen notwendig - beim Einsatz am Kommandoprompt nur eines!
-> Der Befehl Do darf nur dann ein Goto-Befehl sein, wenn dabei der For-Befehl endgültig verlassen werden soll.
-> Falls Sie für mehrere Argumente mehrere Befehle auf einmal mit For ausführen wollen, so können sie Command, Call oder - unter Vorbehalt - das Pipe-Symbol [|] einsetzen.

Lfnfor - NUR unter Windows95/98!
Wenn in der For-Liste lange Dateinamen, wie sie Windows 95/98 unterstützt, verarbeitet werden sollen, so müssen  Sie vorher mit dem speziellen Befehl Lfnfor diese Art der Verarbeitung zulassen oder wieder ausschließen.

Syntax:
Lfnfor - Zeigt die aktuelle Einstellung an
Lfnfor On - Aktiviert lange Dateinamen beim Verarbeiten von For-Befehlen.
Lfnfor Off - Deaktiviert lange Dateinamen beim Verarbeiten von For-Befehlen.

Goto - Setzt die Ausführung eines Stapelverarbeitungsprogramms an einer Markierung fort.

Syntax:
Goto Markenname - Sprunganweisung: Die Marke muß in der Stapeldatei vorliegen!
:Markenname - Sprungmarke 8oder Kommentar - kein Befehl!)

Dem Goto-Befehl muß ein Sprungmarkenname folgen. Dieser Markenname kann direkt angegeben werden oder als Variable konzipiert sein.

Beispiele:
Goto Test

Goto %Config%

Goto %1

For %%x In (x y z) Do If %1.==%%1x. Goto %%x

If %Var%.==Ende. Goto %var%

-----------------------

@echo off
Goto Start
:Loesch
Del *.tmp
Goto Ende
:Start
If "%1"=="alles" Goto Loesch
:Ende

Vorteile:
+ Goto kann im Befehlsstrom vor- und rückwärtsspringen.
+ Groß- & Kleinschreibung ist bei Marken unerheblich.
+ Markenzeichen läßt sich auch zur Kommentierung verwenden.
+ Rest der Goto-Zeile läßt sich auch zur Kommentierung verwenden.
+ Auch der Parameter oder Kombination mit Zeichenketten können Markennamen sein - vorrausgesetzt, sie halten sich an die Namenskonventionen.

Nachteile:
- Goto ibetet von sich aus keine Unterprogrammtechnik an (muß über Call oder mehrfachen Goto-Konstruktionen realisiert werden)
- Goto meldet doppelte Marken nicht
- Fehlende Marken führen zum Abbruch der Stapelverarbeitung.

If - Verarbeitet Ausdrücke mit Bedingungen in einem Stapelverarbeitungsprogramm.

Syntax:
If Bedingung Befehl - Falls die Bedingung wahr ist, führe den Befehl aus.
If not Bedingung Befehl - Falls die Bedingung nicht wahr ist, führe den Befehl aus.

Als Befehle kommen alle DOS- oder Stapelbefehle in Betracht.

Bedingungen:
If Errorlevel Zahl - 0 ist dabei immer das Errorlevel für die erfolgreiche Ausführung des Befehles. Es sind Werte zwischen 0 und 256 möglich, je nach Befehl sind die Errorlevel verschieden.
If String1==String2 - Ist wahr, wenn beide Stringwerte identisch sind. Dabei ist z.B. a nicht gleich A !!!
If Exist Datei(gruppe) - Ist wahr/erfüllt, wenn die angegebene Datei gefunden wird. Pfadangaben und Jokerzeichen (* und ?) sind dabei erlaubt.

Beispiele:

if exist *.bat dir *.bat

if not "alle"=="%1" del *.tmp

-------------------------

@echo off
xcopy *.* a:
If Errorlevel 1 goto sonicht
goto Ende
:sonicht
echo Kopiervorgang war nicht erfolgreich!
pause
goto ende
:ende

Vorteile:
+ If exist arbeitet mit Wildcards.
+ Läßt Eingabeparameter oder benannte Parameter abprüfen.
+ Läßt Vorhandensein von Dateien abprüfen.
+ Läßt Errorlevel abprüfen. ( Von oben nach unten!).
+ Läßt sich mit anderen If-befehlen verknüpfen.

Nachteile:
- Kein Else-Zweig von sich aus angeboten: Dieser muß durch Programmkonstruktionen ersetzt werden.
- Errorlevel nur umständlich abzufragen.
- Keine Zeichenketten-Funktionen.
- Anfällig für Syntaxfehler oder Fehlinterpretationen.

Pause - Hält die Ausführung einer Stapelverarbeitungsdatei an.

Syntax:
Pause
- Pause-Befehl ohne Textangabe
Pause Text - Pause-Befehl mit Textangabe
Pause > NUL - Pause-Anzeige wird unterdrückt

 

Prompt - Modifiziert die MS-DOS-Eingabeaufforderung

Rem - Leitet Kommentare in einer Stapelverarbeitungsdatei ein.

Set - Setzt oder entfernt MS-DOS-Umgebungsvariablen.

Shift - Verändert die Position ersetzbarer Parameter in einem Stapelverarbeitungsprogramm.

nach oben

Stapelnahe Befehle:

CD [Parameter] - Wechseln des Verzeichnisses. Entweder Sie geben ein Verzeichnis an oder die Parameter .. (nächsthöheres Verzeichnis) oder \ (Hauptverzeichnis).

Unter Windows95/98 lassen sich weitere Punkte angeben:
CD... wechselt in das um zwei Ebenen höhere Verzeichnis - je mehr Punkte Sie angeben, in um so ein höheres Verzeichnis wird gewechselt.

CLS - Löscht den Bildschirminhalt.

Command [Parameter]- Startet eine neue Instanz des des MS-DOS-Befehlsinterpreters. Optional sind Parameter anzugeben. (Siehe command /?)

CTTY - Wechest das Ein-/Ausgabegerät zur Steuerung des Systems. Damit lassen sich auch auch unerwünschte Bildschirmanzeigen unterdrücken, sofern beispielsweise der Befehl CTTY NUL vor den betreffenden Befehl gesetzt wird.

DOSKEY - Editiert Befehlseingaben, ruft Befehle zurück und erstellt Makros.

Date - Wechselt das eingestellte Datum oder zeigt es an.

Edit [Pfadangabe\Datei] - Startet den MS-DOS-Editor. Optional ist gleich die Datei mit anzugeben.

Exit - Beendet den Befehlsinterpreter command.com .

FC - File Compare: Dateien vergleichen (Ascii/Binär)

Path [Pfadangabe] - Legt den Suchpfad für ausführbare Dateien fest oder zeigt sie an.

Start [ Parameter] Befehl - Unter Windows95/98 sind damit DOS-Befehle abzusetzen oder Windows-Programme zu starten. (z.B. Start c:\windows\calc.exe).

Time - Stellt die Systemzeit ein oder zeigt sie an.

Type [Datei] - Zeigt den Inhalt einer Textdatei an.

nach oben

Filterbefehle:

Find - Sucht in einer oder mehreren Dateien nach einer Zeichenfolge. Läßt sich für viele tolle  Tricks verwenden, da "gefunden" oder "nicht gefunden" mit Errorlevel auszuwerten!

Sort - Gibt die Eingabe (Datei/Tastatur/Übergabe) sortiert auf dem Bildschirm, Datei oder anderem Gerät aus.

More - Zeigt Daten seitenweise auf dem Bildschirm an - unter Ausnützung der Überleitung (Piping).

Praktische Beispiele:
Wird demnächst fertiggestellt!

nach oben

Tips & Tricks:
Wird demnächst fertiggestellt!

nach oben

Quellen: Carl Hanser Verlag München
" Batch-Betrieb und Automation unter DOS und Windows 3.x / 95" 
1996
ISBN 3-446-18658-1


TOC2OFF.GIF Zurück! POST.GIFpitti_platsch@gmx.de  UPDATED 13.06.2000