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