batch selbstgemacht

Transcription

batch selbstgemacht
Batch-Man
Seite 1 von 9
[ 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:
Batch-Befehle
Stapelnahe Befehle
Filter-Befehle
nach oben
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
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 2 von 9
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 SetSchalter zu setzen)
Nachteile:
- In Verbindung mit Call funktionieren keine Umleitungen (weder >,<,>> noch | ).
Choice - Wartet auf die Auswahl des Benutzers der angezeigten Optionen.
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 3 von 9
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
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 4 von 9
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:
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 5 von 9
@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.
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 6 von 9
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 GotoKonstruktionen 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
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 7 von 9
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:
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 8 von 9
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-DOSBefehlsinterpreters. 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!
http://www.antonis.de/dos/batchtut/pittipla/
29.02.2008
Batch-Man
Seite 9 von 9
Backup des Windows-Systems
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
POST.GIF
Zurück!
http://www.antonis.de/dos/batchtut/pittipla/
pitti_platsch@gmx.de€
13.06.2000€
29.02.2008