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.
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.
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.
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).
Quellen: Carl Hanser Verlag München
" Batch-Betrieb und
Automation unter DOS und Windows 3.x / 95"
1996
ISBN
3-446-18658-1
Zurück! | pitti_platsch@gmx.de | 13.06.2000 |