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