BBU-BSK Uebung 04 - Batchdateien erstellen
Transcrição
BBU-BSK Uebung 04 - Batchdateien erstellen
HBF IT-Systeme BBU-BSK Übung 4 Zeit Stand: 18.09.2011 Laborübung Batchdateien erstellen 90 min Informationen: Die Bezeichnung „Stapelverarbeitung“ stammt aus der Anfangszeit der Datenverarbeitung, als interaktive Verarbeitung noch nicht möglich war. Programme und Datensätze wurden damals auf Lochkarten gestanzt, die Lochkarten wurden auf einen Kartenstapel (batch) gelegt und nacheinander abgearbeitet. Als später die Lochkarte als Eingabemedium vom Terminal abgelöst und damit interaktives Arbeiten mit dem Dialogcomputer möglich wurde, blieb der Begriff aber erhalten. Man gibt einen Auftrag vor und der wird vom Computer erledigt, ohne dass der Benutzer weiter eingreifen muss. Stapelverarbeitung im Sinne von Listenabarbeitung wird häufig für betriebssystemnahe Dienste und Aufgaben verwendet. Für solche Listen ist durch MS-DOS der Begriff Batch-Datei oder Batch-File bekannt geworden. Batch-Dateien enthalten eine Reihe von Befehlen, die die BetriebssystemFunktionen nutzen; diese werden nach Starten der Datei Schritt für Schritt, wie ein Programm, abgearbeitet. Bei DOS/Windows werden die Batch-Dateien üblicherweise mit der Dateinamenserweiterung .bat oder .cmd versehen. Unter Windows können sie durch einen Doppelklick gestartet werden. Bei Unix bezeichnet man Batch-Dateien als Shellskript. Mittlerweile wurde auch ein möglicher Nachfolger der Cmd.exe-Shell unter dem Namen Windows PowerShell von Microsoft veröffentlicht, welcher wesentlich komplexere Batch-Skripte zulässt. MS-DOS Befehle a: c: wechselt zwischen Laufwerken a: c: a: md neues Verzeichnis erstellen md Hardware cd in ein anderes Verzeichnis wechseln a:\> cd Hardware a:\Hardware> cd .. Übung cd Hardware md Eingabe cd Eingabe md Tastatur md Maus eine Ebene in der Verzeichnisstruktur zurück gehen Zurückwechseln auf a:\> cd.. cd.. www.p-merkelbach.de –1– © Merkelbach HBF IT-Systeme cd LW:\Pfad schneller Wechsel in ein Verzeichnis cd a:\Hardware\Eingabe\Maus cd \ wechselt in das Wurzelverzeichnis (Haupt- oder Stammverzeichnis) cd \ Übung cd a:\Hardware\Eingabe\Tastatur cd\ md LW:\Pfad erstellt ein Verzeichnis im entsprechenden Pfad cd\ md a:\Hardware\Ausgabe md a:\Hardware\Ausgabe\Monitor cls löscht den Bildschirminhalt cls Vervollständige die folgende Struktur: a:\ Hardware Eingabe Tastatur Maus Ausgabe Drucker Monitor Zentraleinheit Software Betriebssystem Anwendungsprogramme Programmiersprachen rd Verzeichnis löschen a: cd\ cd Software rd Betrieb rd Programm Vorbereitung: copy Verzeichnis kann nur gelöscht werden, wenn es leer ist Die 14 Textdateien und die 3 Datendateien in das Verzeichnis c:\home\ kopieren! kopieren von Dateien copy Quelle Ziel Verzeichnis Texte auf a: erstellen! a: cd\ md Texte copy g:\*.* a:\Texte www.p-merkelbach.de –2– © Merkelbach HBF IT-Systeme cd \ copy a:\Texte\Maus.txt a:\Hardware\Eingabe\Maus copy a:\Texte\Monitor.txt a:\Hardware\Ausgabe\Monitor copy a:\Texte\Drucker.txt a:\Hardware\Ausgabe\Drucker copy a:\Texte\*.txt a:\Software\Anwend dir listet den Inhalt eines Verzeichnisses auf cd\ dir cd Hardware dir cd \ c: cd windows dir (Page) Anzeige seitenweise (Wide) Anzeige Spaltenweise Anzeige aller Textdateien dir /p dir /w dir *.txt a: cd \ dir Drucker.txt /s Joker oder Wildcards * steht für beliebig viele Zeichen ? steht für ein beliebiges Zeichen Listet Dateien im Verzeichnis und allen Unterverzeichnissen auf "Suchen von Dateien" a: cd a:\Software\Anwend dir del del dir del del del del del löscht eine oder mehrere Dateien Maus.txt Monitor.txt Drucker.txt text*.txt config.txt info.txt cd\ del a:\Hardware\Eingabe\Maus\Maus.txt move Verschieben von Dateien oder Umbenennen von Verzeichnissen move a:\Texte\Maus.txt a:\Hardware\Eingabe\Maus ren Änderung eines Dateinamens cd\ cd Texte dir ren Drucker.txt Laser.txt DOS-Befehl /? Dos-Hilfe zu dem jeweiligen Befehl dir /? www.p-merkelbach.de –3– © Merkelbach type HBF IT-Systeme zeigt den Inhalt einer Textdatei an type a:\Texte\info.txt |more seitenweise Anzeige type a:\Texte\info.txt |more diskcopy LW1: LW2: kopieren von Disketten gleicher Speicherkapazität xcopy /s/e/v /s kopiert alle Unterverzeichnisse mit Dateien /e kopiert auch leere Unterverzeichnisse mit /v Überprüfung des Kopiervorgangs a: cd\ md Backup xcopy a:\Hardware a:\Backup /s /e copy Q1+Q2+Q3 + Z Zusammensetzen mehrerer Dateien zu einer Datei cd a:\Texte copy text1.txt + text2.txt + text3.txt gesamt.txt attrib Änderung von Datei-Attributen (Dateieigenschaften) attrib +h config.txt dir Datei versteckt attrib +r text1.txt del text1.txt Datei schreibgeschützt Meldung: Zugriff verweigert! attrib /s oder attrib *.* oder attrib config.txt attrib -h config.txt attrib -r text1.txt Attribute: +r Schreibgeschützt -r Aufheben Schreibschutz +a Archiv -a Archivierung aufheben Dateiänderungen werden angezeigt; grundsätzlich ist +a für neue Dateien +h Versteckt -h Anzeigen deltree löscht ein Verzeichnis mit allen Dateien und Unterverzeichnissen cd\ rd Backup deltree Backup date Meldung: Verzeichnis ist nicht leer! stellt das System-Datum ein oder zeigt es an date time stellt die Zeit ein oder zeigt sie an time prompt www.p-merkelbach.de stellt die Kommandozeile ein (Befehlszeileninterpreter) –4– © Merkelbach HBF IT-Systeme prompt $g prompt $n prompt $p prompt $t prompt $d prompt $h > c (Laufwerk) c:\Windows (Pfadangabe) 14:35:34,04 (Zeitangabe) Di,09.07.1991 (Datumsangabe) radiert ein Zeichen in der Befehlszeile aus (mehrfach möglich) prompt $p$g c:\windons> (Normal) Übung: Kommandozeile mit Nachname, Datum, Uhrzeit (Std.: Min.) und Pfad. prompt Merkelbach $d $t $h$h$h$h$h$h$h $p$g Gerätenamen im Copy-Kommando Bei MS-DOS besitzen alle Geräte einen reservierten Dateinamen. CON Computerkonsole: Eingabe = Tastatur; Ausgabe = Bildschirm PRN Drucker LPT1 parallele Schnittstelle = Drucker COM1 serielle Schnittstelle copy text1.txt lpt1 Datei wird nach LPT1 (Drucker) kopiert copy con prn Die Konsoleneingabe wird auf den Drucker kopiert Dateiende: Enter Die Konsoleneingabe wird in die Datei Eingabe.txt geschrieben. Dateiende: F6 + Enter F6 ersetzt das Steuerzeichen Strg + Z (^Z) copy con a:\texte\eingabe.txt Name Nachmname Straße Hausnummer PLZ Wohnort F6 + Enter Umlenkung von Ein-/Ausgabekanälen > Ziel der Datenumleitung dir a:\texte > prn dir a:\texte > a:\texte\diskdir.txt chkdsk c: > prn type a:\texte\eingabe.txt > lpt1 Befehle in Textdatei aufzeichnen Erstellen einer Batch-Datei doskey /history > befehle.txt doskey /history > befehle.bat tree /f > Struktur.txt >> (Tree funktioniert nicht bei jeder DOS-Version) Daten werden an das Ende des Ziels angehängt type a:\texte\text1.txt >> a:\texte\gesamt.txt ECHO J| del A:*.* www.p-merkelbach.de Das "|" bewirkt, dass der Output von der linken Seite als Eingabe für die rechte Seite übernommen wird. –5– © Merkelbach HBF IT-Systeme IF - Befehl Verarbeitet Ausdrücke in einer Batchdatei abhängig von Bedingungen. IF [NOT] ERRORLEVEL Nummer Befehl IF [NOT] Zeichenfolge1==Zeichenfolge2 Befehl IF [NOT] EXIST Dateiname Befehl NOT Befehl wird nur dann ausgeführt, wenn die Bedingung nicht erfüllt ist. ERRORLEVEL Zahl Bedingung ist erfüllt, wenn das zuletzt ausgeführte Programm einen Code größer oder gleich der Nummer zurückgibt. Zeichenfolge1==Zeichenfolge2 Bedingung ist erfüllt, falls die Zeichenfolgen gleich sind. EXIST Dateiname Bedingung ist erfüllt, wenn die angegebene Datei existiert. Befehl Gibt den Befehl an, der bei erfüllter Bedingung ausgeführt werden soll. Diesem Befehl kann das Schlüsselwort ELSE folgen. Der Befehl nach dem Wort ELSE wird ausgeführt, wenn die angegebene Bedingung nicht erfüllt ist (FALSE). Die ELSE-Klausel muss auf derselben Zeile mit dem Befehl nach IF stehen. Zum Beispiel: IF EXIST test.txt (del test.txt) ELSE echo test.txt fehlt Wenn die Befehlserweiterungen aktiviert sind, wird der IF-Befehl folgendermaßen verändert: IF [/I] Zeichenfolge1 Vergleichsoperator Zeichenfolge2 Befehl Dabei kann der Vergleichsoperator einer der folgenden sein: EQU – gleich LSS - kleiner als GTR - größer als NEQ - nicht gleich LEQ - kleiner als oder gleich GEQ - größer als oder gleich Die /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zu ignorieren. Die /I-Option kann auch in der Form Zeichenfolge1==Zeichenfolge2 verwendet werden. Diese Vergleiche sind allgemein, das heißt, wenn beide Zeichenfolgen nur aus Ziffern bestehen, werden die Zeichenfolgen in Zahlen umgewandelt, und es wird ein numerischer Vergleich durchgeführt. Der Ausdruck %ERRORLEVEL% wird zu einer Zeichendarstellung des aktuellen Werts der Variablen ERRORLEVEL expandiert (vorausgesetzt, es gibt nicht bereits eine Umgebungsvariable mit dem Namen ERRORLEVEL, deren Wert man dann erhält). Nachdem ein Programm ausgeführt wurde, sieht die Verwendung von ERRORLEVEL wie folgt aus: goto Antwort%ERRORLEVEL% :Antwort0 echo J für Ja eingegeben :Antwort1 echo N für Nein eingegeben oder unter Verwendung der Vergleichsoperatoren: IF %ERRORLEVEL% LEQ 1 goto ok Der Ausdruck %CMDCMDLINE% wird zu der originalen Befehlszeile expandiert, die CMD.EXE vor irgendeiner Bearbeitung übergeben wird (vorausgesetzt, es gibt nicht bereits eine Umgebungsvariable mit dem Namen CMDCMDLINE, deren Wert man dann erhält). Der Ausdruck %CMDEXTVERSION% wird zu einer Zeichendarstellung des aktuellen Werts der Variablen CMDEXTVERSION expandiert (vorausgesetzt, es gibt nicht bereits eine Umgebungsvariable mit dem Namen CMDEXTVERSION, deren Wert man dann erhält). www.p-merkelbach.de –6– © Merkelbach HBF IT-Systeme FOR - Befehl Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus. FOR %Variable IN (Satz) DO Befehl [Parameter] %Variable (Satz) Befehl Parameter Ein ersetzbarer Parameter bestehend aus einem einzelnen Buchstaben. Ein Satz von mindestens einer Datei. Platzhalter sind zulässig. Befehl, der für jede Datei ausgeführt werden soll. Parameter und Optionen für den angegebenen Befehl. Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablennamen, %i und %I sind nicht identisch. Wenn die Befehlserweiterungen aktiviert sind, werden folgende Ergänzungen für den FOR-Befehl unterstützt: FOR /D %Variable IN (Satz) DO Befehl [Parameter] Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl auf Verzeichnisse und nicht auf Dateien. FOR /R [[Laufwerk:]Pfad] %Variable IN (Satz) DO Befehl [Parameter] Der FOR-Befehl wird ausgehend vom Verzeichnis [Laufwerk:]Pfad (als Stammverzeichnis) für jedes darunterliegende Verzeichnis ausgeführt. Wenn kein Verzeichnis nach der /R-Option angegeben ist, wird das aktuelle Verzeichnis verwendet. Wenn der Satz nur einen einzelnen Punkt als Zeichen (.) enthält, wird nur die Verzeichnisstruktur aufgelistet. FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter] Der Satz ist eine Folge von Zahlen von Start bis Ende und der angegebenen Schrittweite. So erstellt (1,1,5) die Folge 1 2 3 4 5 und (5,-1,1) erstellt die Folge (5 4 3 2 1). FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter] FOR /F ["Optionen"] %Variable IN ("Zeichenfolge") DO Befehl [Parameter] FOR /F ["Optionen"] %Variable IN (Befehl) DO Befehl [Parameter] SET - Befehl Setzt oder löscht Umgebungsvariablen für CMD.EXE, oder zeigt sie an. SET [Variable=[Zeichenfolge]] Variable Bezeichnet den Namen der Umgebungsvariablen. Zeichenfolge Eine Zeichenfolge, die der Variable zugewiesen werden soll. Der Befehl SET ohne Parameter zeigt die aktuellen Umgebungsvariablen an. Der SET-Befehl legt den ERRORLEVEL mit 1 fest, wenn der Variablenname nicht in der aktuellen Umgebung gefunden wird. Der SET-Befehl erlaubt kein Gleichheitszeichen als Bestandteil eines Variablennamens. Dem SET-Befehl wurden zwei neue Optionen hinzugefügt: SET /A Ausdruck SET /P Variable=[EingabeaufforderungZeichenfolge] Die /A-Option gibt an, dass die Zeichenfolge rechts vom Gleichheitszeichen ein numerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogramm des Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrer Anordnung mit abnehmendem Vorrang: Die Option /P ermöglicht es, einer Variablen eine Eingabezeile des Benutzers zuzuweisen und zeigt die angegebene Eingabeaufforderung an, bevor die Eingabezeile gelesen wird. Die Eingabeaufforderung kann leer sein. www.p-merkelbach.de –7– © Merkelbach HBF IT-Systeme Aufgabe 1: Sie sollen in einer Arztpraxis die Labordatenübertragung anpassen. Die Praxis bekommt jeden Tag die Laborwerte der Patienten über eine ISDN Verbindung übermittelt. Die Daten werden als Labor1.txt, Labor2.txt … Labor10.txt in dem Ordner H:\Temp gespeichert. - Schreiben Sie eine Batchdatei Labordaten_verschieben.bat, die folgendes macht: - Einen Ordner Labor erstellen, wenn dieser nicht existiert. (IF not exist) - Einen Ordner mit dem aktuellen Datum erstellen, wenn dieser nicht existiert. (IF not exist) - Die Dateien aus dem Ordner H:\Temp sollen in den Ordner H:\Labor\aktuellesDatum kopiert werden und dabei in Labor1.dat, Labor2.dat … Labor10.dat umbenennen. (FOR-Befehl) - Die Dateien im Ordner H:\Labor\aktuellesDatum sollen schreibgeschützt werden. (FOR-Befehl) - Die Dateien im Ordner H:\Temp sollen gelöscht werden. Aufgabe 2: Erweitern Sie die Batchdatei so, dass der Benutzer das Datum für den Datumsordner und die neue Dateiendung (z.B. .txt oder .tmp) selber, während der Ausführung der Batchdatei, eingeben kann. (SET-Befehl) Aufgabe 3: Erweitern Sie die Batchdatei um die Abfrage, ob die Dateien nach dem Verschieben versteckt werden sollen oder nicht. Aufgabe 4: Erstellen Sie eine Batchdatei, die in der Datei Hosts nach einem Rechnereintrag sucht und die IPAdresse des Rechners korrigiert. www.p-merkelbach.de –8– © Merkelbach