Batch Programmierung
Batch Programmierung
[Link]
9. Februar 2012
Inhaltsverzeichnis
1 A LLGEMEINE I NFORMATION 1.1 B ATCH -P ROGRAMMIERUNG . . . . . . . . . . . . . . . . . . . . . . 1.2 W IE ERSTELLE ICH EINE B ATCHDATEI ? . . . . . . . . . . . . . . . . 1.3 A LLGEMEINE I NFORMATIONEN . . . . . . . . . . . . . . . . . . . . W ICHTIGE DOS-KOMMANDOS 2.1 ASSOC . . . . . . . . . . . 2.2 ATTRIB . . . . . . . . . . . 2.3 CACLS . . . . . . . . . . . 2.4 CD / CHDIR . . . . . . . . 2.5 CLS . . . . . . . . . . . . . 2.6 COMP ODER FC . . . . . . 2.7 ( X ) COPY / ROBOCOPY . . . 2.8 DATE . . . . . . . . . . . . 2.9 DEL / ERASE . . . . . . . . 2.10 DELTREE . . . . . . . . . . 2.11 DIR . . . . . . . . . . . . . 2.12 EDIT . . . . . . . . . . . . 2.13 EXIT . . . . . . . . . . . . 2.14 FDISK . . . . . . . . . . . 2.15 FIND . . . . . . . . . . . . 2.16 FORMAT . . . . . . . . . . 2.17 HELP . . . . . . . . . . . . 2.18 IPCONFIG . . . . . . . . . 2.19 KEYB . . . . . . . . . . . . 2.20 LOADHIGH . . . . . . . . 2.21 MD . . . . . . . . . . . . . 2.22 MORE . . . . . . . . . . . 2.23 MOVE . . . . . . . . . . . 2.24 NETSH . . . . . . . . . . . 2.25 PATH . . . . . . . . . . . . 2.26 PROMPT . . . . . . . . . . 2.27 RD / RMDIR . . . . . . . . 3 3 4 4 5 5 5 5 6 7 7 7 8 9 9 9 10 10 10 11 11 11 11 12 12 12 12 13 13 13 14 14
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
III
Inhaltsverzeichnis
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
14 14 14 15 15 15 15 16 16 17 17 17 18 19 21 21 22 23 23 25 29 29 30 31 32 33 37 37 37 38 38 39 39 40 43 43 43 45
B ATCH B EFEHLE 3.1 V ORSICHT L EERZEICHEN ! 3.2 @ . . . . . . . . . . . . . . 3.3 : (D OPPELPUNKT ) . . . . 3.4 CALL . . . . . . . . . . . 3.5 CLS . . . . . . . . . . . . 3.6 CMD . . . . . . . . . . . 3.7 COLOR . . . . . . . . . . 3.8 COMMAND . . . . . . . 3.9 ECHO . . . . . . . . . . . 3.10 FOR . . . . . . . . . . . . 3.11 GOTO . . . . . . . . . . . 3.12 IF . . . . . . . . . . . . . 3.13 PAUSE . . . . . . . . . . 3.14 REM . . . . . . . . . . . . 3.15 START . . . . . . . . . . 3.16 VARIABLEN . . . . . . . . B ATCH O PERATOREN 4.1 & . . . . . . . . 4.2 | . . . . . . . . 4.3 && . . . . . . . 4.4 || . . . . . . . . 4.5 < . . . . . . . . 4.6 > . . . . . . . . 4.7 >> . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
IV
Inhaltsverzeichnis
46 47 47 49 63 63 64 66 66 67 73 91 93 93 97 97 101 105
P ROGRAMMIERUNGSHILFEN N ETZWERKUMGEBUNG 7.1 PING . . . . . . . . 7.2 IPCONFIG . . . . . 7.3 TRACERT . . . . . . 7.4 NETSTAT . . . . . . 7.5 NET . . . . . . . . B EISPIELE Z USATZ -T OOLS
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
8 9
10 R EFERENZ 10.1 L ISTE ALLER INTERNEN UND EXTERNEN B EFEHLE ( ENTSPRICHT DER AUSGABE DES B EFEHLS H E L P UNTER W INDOWS XP) . . . . . 11 W EB L INKS 11.1 W EBLINKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 AUTOREN A BBILDUNGSVERZEICHNIS K ATEGORIE :B UCH MIT D RUCKVERSION1
Inhaltsverzeichnis
1 Allgemeine Information
1.1 Batch-Programmierung
Batchprogramme (hug mit Stapelverarbeitungsprogramme oder kurz Stapelprogramm bersetzt) sind meist kurze Dateien, die Befehle der Kommandozeile der Reihe nach abarbeiten. Batchprogrammierung erfllte die grundlegenden Anforderungen an eine Programmiersprache wie z.B. if, if not und while. Da Batch sich in den Bereich Shellscripting einordnen lsst, kann man von einer interpreterbasierten Skriptsprache reden. Das heit, dass die im Editor erstellte Textdatei nicht mit einem C OMPILER1 einmal in Maschinensprache bersetzt und in einer ausfhrbaren Binrdatei im *.exe Format gespeichert, sondern bei jedem Aufruf durch einen Interpreter zur Laufzeit in ein fr den Computer verstndliches Format bersetzt wird. Ein Texteditor wie MS Notepad, den Windows von Haus aus mitbringt, reicht vollkommen aus um Batchprogramme zu schreiben. Batchprogrammierung ist speziell fr die Steuerung des Betriebssystems gedacht, fr die Entwicklung von Anwendungen ist sie nicht geeignet. Hierzu verwendet man Sprachen wie C/C++ und Java (nicht zu verwechseln mit JavaScript!!). Viele wiederkehrende Installations- und Verwaltungsaufgaben, die man traditionell mit Tastatur und Maus ausfhrt, lassen sich mit Stapeldateien ausfhren. Hat man gengend Kommentarzeilen in die Batchdatei eingefgt, gengt der Ausdruck der Stapeldatei meist als Dokumentation. Kommandozeilenbefehle und Batchdateien sind keine veraltete Technologie. Auf Wunsch vieler Systemadministratoren hat Microsoft dafr gesorgt, dass Windows Server 2003 vollstndig von der Kommandozeile installiert und administriert werden kann, ohne die Maus zu benutzen. In diesem Buch geht es ausschlielich um die Erstellung von Batch-Dateien unter Windows und DOS. Andere Betriebssysteme bieten vergleichbare und wesentlich mchtigere Funktionen (wie z. B. die in der Linux-Welt weit verbreitete Bash oder AppleScript fr den Mac).
1
H T T P :// D E . W I K I B O O K S . O R G / W I K I /C O M P I L E R
Allgemeine Information
Die Begriffe "Stapelprogramm" und "Stapelverarbeitung" rhren aus der Zeit her, als Permanentspeicher auf Magnetplatten sehr teuer war. Zu dieser Zeit begab man sich mit einem Stapel Lochkarten aus Pappe, auf denen sich das Programm und die Daten in gestanzter Form befanden, zum Rechenzentrum und bergab dem Operator seinen Stapel. Die Stapel aller Benutzer wurden gesammelt und dann sequentiell an den Rechner bergeben. Nach einiger Zeit konnte man sich dann die (meist ausgedruckten) Ergebnisse abholen.
2 3 4
2 Wichtige DOS-Kommandos
Man unterscheidet bei DOS-Befehlen grundstzlich zwischen internen und externen Befehlen. Interne Befehle sind Bestandteil der Shell selbst, whrend externe Befehle als eigene Programme vorliegen. Die DOS-Befehle, die interessant fr die Batch-Programmierung sein knnten, sind im Folgenden aufgelistet:
2.1 assoc
Mit Hilfe dieses Befehls kann man die Dateierweiterungen bearbeiten bzw. anzeigen lassen.
assoc [.dateiendung[=Dateibeschreibung]]
2.2 attrib
ndert das Dateiattribut. Mglich sind "schreibgeschtzt" (+r/-r), "versteckt" (+h/-h) und "archiv" (+a/-a)
2.3 cacls
ndert die Rechte (Access Controll List) auf NTFS Partitionen oder zeigt diese an.
cacls *.* /E /T /G Bob:C
Fgt beispielsweise dem User Bob das Recht "ndern" fr alle Dateien und Ordner im aktuellen und allen Unterordnern hinzu. Achtung! Standardmig werden Rechte ersetzt!
Wichtige DOS-Kommandos
2.4 cd / chdir
ber den cd- oder chdir-Befehl (change directory) kann das aktuelle Verzeichnis gewechselt werden. Beachte: Nach dem "cd" folgt ein Leerzeichen, das bei nachfolgendem .. oder \ je nach Betriebssystemversion weggelassen werden darf. Wird der Befehl ohne Parameter ausgefhrt, so wird der Pfad des aktuellen Verzeichnisses ausgegeben. relative Angaben: Die Eingabe von "cd .." wechselt in das nchsthhere Verzeichnis ("cd ..\.." zwei Ebenen hher usw.). Die Eingabe von "cd ORDNERNAME" wechselt in den Unterordner ORDNERNAME. absolute Angaben: Die Eingabe von "cd \" wechselt in das Hauptverzeichnis auf dem derzeitig bendlichen Laufwerk. Die Eingabe von "cd \ORDNERNAME" wechselt absolut in den Ordner ORDNERNAME auf dem derzeitig bendlichen Laufwerk. Die Eingabe von "LAUFWERKSBUCHSTABE:" (ohne vorangestelltes "cd") wechselt in das aktuelle Verzeichnis des gewhlten Laufwerks LAUFWERKSBUCHSTABE. Die Eingabe von "cd LAUFWERKSBUCHSTABE:\ORDNERNAME" wechselt absolut in den Ordner ORDNERNAME auf dem gewhlten Laufwerk von LAUFWERKSBUCHSTABE jedoch nicht von einem Laufwerk auf ein anderes. Pfadangaben mit Leerschlgen (Bsp "C:\program les\") mssen in Anfhrungs-/Schlusszeichen eingeschlossen sein.
cls
Der Befehl "cd /D %dp0" wechselt in den Ordner des Batch-Skripts. (sinnvoll bei Windows-Doppelklicks) Wildcards: Ist die Pfadangabe eindeutig kann der Ordnername durch Nutzen von Wildcards (z.b. \win* fr \windows oder \winnt) abgekrzt werden. Dies ist jedoch im Batchbetrieb nicht ratsam. Remotesysteme: Pfade von nicht als Laufwerken verbundenen Remotesystemen knnen (Berechtigung vorausgesetzt) entweder ber die Administrative Freigabe oder durch das Verbinden eines Netzlaufwerks angesprochen werden. Beispiel fr administrative Freigabe: \\[computername]\[laufwerk]$\[Weiterer Pfad] Pfad in Variable: Der Befehl "set PFAD=%cd%" schreibt das aktuelle Verzeichnis in die Variable %PFAD%. (als letztes im Batch-Script mit "cd %PFAD%" wieder ins Startverzeichnis wechseln!)
2.5 cls
Lscht den Bildschirminhalt (clear screen)
2.7 (x)copy/robocopy
Mit dem Befehl copy knnen eine Datei oder mehrere Dateien kopiert werden.
Wichtige DOS-Kommandos
xcopy ist die erweiterte Version von copy, die mehr Optionen bietet. Diese ist nicht in allen Windows-Versionen verfgbar.
Das weitaus mchtigere robocopy ist ab Vista standardmig wieder verfgbar, bei Windows XP und 2000 fehlt dieses Programm zunchst. Microsoft stellt robocopy aber im Windows Server 2003 Resource Kit Tools 2003 auch fr diese Betriebssystemversionen bereit. Mit dem Befehl copy /b "DATEI" + "DATEI" "NEUE DATEI" kann man Dateien zusammenfgen.
2.8 date
Gibt das aktuelle Datum aus und ermglicht dem Benutzer die nderung des Datums. Wird der Befehl mit dem Parameter /t aufgerufen, so wird nur das aktuelle Datum ausgegeben. Um das Datum zu teilen, also z.B. nur das Jahr zu verwenden, gibt es folgende Syntax:
date:6,4
Beispiel:
z:\>echo %date:6,4% 2010
Hier werden vom Datum die ersten 6 Zeichen weggelassen und dann vier Stellen angezeigt. Bei TIME1 funktioniert das analog. Bei einigen Betriebssystemversionen erfordert das ndern des Systemdatums administrative Rechte. XP: Die Ausgabe des Datumsformates ist abhngig von den Einstellungen in den Regions- und Sprachoptionen (Systemsteuerung)
H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23 T I M E
del / erase
2.10 deltree
Lscht Verzeichnis(se) inkl. untergeordnete Dateien. Unter Windows XP lautet der Befehl rmdir. Deltree kennt es nicht mehr. Anmerkung: rmdir/rd versteht keine Wildcards (* oder ?) im Verzeichnisnamen.
2.11 dir
Der Befehl dir (directory) zeigt alle Verzeichnisse und Unterverzeichnisse an. Verzeichnisse werden seit Windows 95 als Ordner bezeichnet, unterscheiden sich allerdings nicht von Verzeichnissen. Der dir-Befehl hat zahlreiche Optionen: /b - Nur der Dateiname wird ausgegeben. Die Ausgabe aller weiteren Informationen wie beispielsweise Datum, Gre oder Datentrgerbezeichnung wird unterdrckt. /c - Die Dateigre wird mit einem Punkt als Trennzeichen zwischen jeweils drei Dezimalstellen angegeben, also beispielsweise 343.232 (Standardeinstellung). Soll dies unterdrckt werden, geben Sie als Option /-c an. /p - Bei jedem Seitenumbruch wird die Ausgabe unterbrochen, bis der Anwender eine Taste drckt. /on - Gibt das Verzeichnis alphabetisch sortiert aus.
Wichtige DOS-Kommandos
/w - Mehrere Eintrge in einer Zeile werden angezeigt. /ah - Versteckte Dateien werden angezeigt. /a - Alle versteckten- und System-Dateien werden angezeigt. /s - Zeigt auch den Inhalt der Unterverzeichnisse an.
Mit dem Befehl dir [Dateiname] ist es auch mglich, Dateien im aktuellen Verzeichnis zu suchen. Alternativ kann auch der Platzhalter * (bspw.: dir *.* ) verwendet werden, um nach bestimmten Dateien zu suchen. Mit dir *. werden nur Objekte ohne Dateinamen-Erweiterung angezeigt. In der Regel haben Ordner keine Erweiterung und Dateien eine Erweiterung. In diesem Fall werden nur Ordner angezeigt. Ordner werden im DOS mit <dir> vor dem Ordnernamen gekennzeichnet.
2.11.1 Kombinationen
dir /w/o/s/p durchsucht den aktuellen Pfad inklusive Unterordner nach einer Datei und stellt das Ergebnis seitenweise dar.
2.12 edit
Mit edit wird ein Editor geffnet, zum Beispiel zum Bearbeiten von B ATCH2 oder Textdateien.
2.13 exit
Beendet die Eingabeaufforderung/kehrt zu Windows zurck.
2.14 fdisk
Partitioniert die Festplatte.
H T T P :// D E . W I K I B O O K S . O R G / W I K I /B A T C H
10
nd
2.15 nd
Mit dem Befehl find kann - auch in mehreren Dateien - nach einer Zeichenfolge gesucht werden. Auch find kann mit Parametern gesteuert werden:
/i ignoriert Gro-/Kleinschreibung beim Suchbegriff /v Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten. /c Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an. /n Zeigt die Zeilen mit ihren Zeilennummern an.
2.16 format
Formatiert die Festplatte oder Diskette. Mit format c: wird die Festplatte c: formatiert. Mit format a: wird die Diskette im Laufwerk a: formatiert. Mit format c: -s bzw. format a: -s kann man die Festplatte/Diskette mit Systemdateien formatieren, so dass sie nachher bootfhig sind.
2.17 help
Die Hilfe-Funktion steht in allen Windows-Systemen (auer Win9X, d. h. 95/98/ME) zur Verfgung. Der allgemeine Befehl hierzu lautet help. Als Ausgabe wird eine Liste mit einem Teil der verfgbaren Kommandozeilen-Befehle ausgegeben. Diese Listen umfasst den Befehlsnamen (linke Spalte) und eine Beschreibung (rechte Spalte). Soll ein Befehl genauer erklrt werden, so lautet die Eingabe help BEFEHLSNAME oder auch BEFEHLSNAME /?. Diese Eingabe in die Kommandozeile frdert detaillierte Informationen und z.T. auch Beispiele zu einem Befehl zu Tage. Es werden jedoch nicht alle Befehle die es im DOS gibt angezeigt.
2.18 ipcong
Informationen ber die Windows-IP-Konguration Der ipconfig-Befehl hat folgende Optionen: /all - Zeigt zustzliche Details
11
Wichtige DOS-Kommandos
/release - Gibt die zugeteilte IP-Adresse zurck /renew - Bezieht eine neue IP-Adresse
2.19 keyb
Ldt Tastaturtreiber. keyb grc:\dos\[Link] ldt den deutschen Tastaturtreiber ([Link] muss sich im Verzeichis c:\dos\ benden)
2.20 loadhigh
Ldt Programme in freie UMB Upper-Memory-Blocks
2.21 md
Der Befehl md (make directory) legt ein neues Verzeichnis an.
2.22 more
Mit der Ausgabeumleitung | more (bspw.: type [Dateiname] | more ) wird bei Seitenwechsel zur Besttigung aufgefordert. Damit besteht die Mglichkeit ber mehrere Seiten fhrende Dokumente anzuzeigen.
more ist der einzige Befehl, bei der auch in der DOS-Welt die sogenannte Pipe verwendet wird. Bei der Pipe handelt es sich um das Zeichen |. Mit diesem
Zeichen ist es mglich, zwei Befehle miteinander auf eine spezielle Weise zu verbinden. Dabei wird der erste Befehl ausgefhrt, seine Ausgaben werden jedoch nicht auf den Bildschirm geschrieben, sondern in einen Puffer. Der zweite Befehl wird auf eine Weise gestartet, dass er seine Eingaben nicht von der Tastatur, sondern von ebendiesem Puffer bekommt. Mit more ist es ebenfalls mglich den Inhalt einer Datei an eine andere Datei anzuhngen.
12
move
So kann man zum Beispiel mit: more "C:\[Link]" >> "D:\[Link]" den Inhalt der "[Link]" an den Inhalt der "[Link]" anhngen. "[Link]" wird dabei nicht verndert.
2.23 move
Verschieben von einer oder mehrerer Dateien von einem Verzeichnis in ein anderes. oder ein Verzeichnis umbenennen
2.24 netsh
Ohne Parametereingabe ergibt sich ein neuer Kontext. Weitere Hilfe mit: ? Beispiel : netsh interface dump > [Link] Diese Zeile als Batch-Datei ausgefhrt legt die momentane IP-Konguration in einer Datei namens [Link] ab. Umgekehrt kann aus einer Datei z. B. namens [Link] eine neue IP-Konguration geladen und bernommen werden:
netsh -f [Link]
So lsst sich eine IP-Konguration ohne Umherklicken in Systemmens ablegen und (modiziert) wieder zurckholen.
2.25 path
Durch die Angabe eines Pfades wird das Betriebssystem auf der Kommandozeile dazu aufgefordert, neben dem aktuellen Verzeichnis auch in weiteren Verzeichnissen zu suchen. Wird der Befehl ohne Parameter ausgefhrt, so werden alle aktuellen Pfade ausgegeben.
13
Wichtige DOS-Kommandos
2.26 prompt
Legt das Aussehen der Eingabezeile fest.
2.27 rd / rmdir
Der Befehl rd oder rmdir (remove directory) lscht ein Verzeichnis, wenn dieses leer ist. Parameter: /s Lscht einen ganzen Verzeichnisbaum mit Dateien /q Lscht ohne Nachfrage ganze Verzeichnisbume. Kann in Batch-Dateien praktisch sein. Der Verzeichnisname darf keine Wildcards enthalten (* oder ?).
rmdir /s /q C:\temp
2.29 set
set setzt eine temporre Umgebungsvariable oder gibt die Variablenwerte aus.
Temporr bedeutet jeweils nur fr die aktuelle cmd Session.
2.30 setlocal
setlocal Steuert die Begrenzung des Gltigkeitsbereiches von nderungen. Wird mit endlocal beendet.
14
start
2.31 start
ffnet neues Fenster fr eigenes Programm. Beispiel: (WinXP) zum ffnen eines neuen Konsolenfensters in dem eine Datei aufgerufen wird. start "Name des neuen Fensters" /WAIT /D C:\temp /NORMAL call [Link] /WAIT = Wartet bis Anwendung geschlossen wird. /NORMAL = Startet Anwendung in der NORMAL-Priorittsklasse. /D = Danach folgt das Startverzeichnis
2.32 taskkill
Ab Windows XP kann man mit diesem Befehl einen Prozess beenden, beispielsweise wenn dieser nicht mehr reagiert. Unter Einbindung von /t werden auch alle untergeordneten Prozesse beendet, und wenn man /f hinzufgt, wird das Beenden erzwungen.
taskkill /f [Link] /t
2.33 tasklist
Dieser Befehl listet alle aktiven Prozesse auf, die gerade auf diesem Computer laufen. Damit lsst sich zum Beispiel der Name eines zu beendenden Prozesses ermitteln (siehe unten: taskkill). Mit einem hinzugefgten /nh werden die Spaltenberschriften ausgeblendet. Der Befehl "tasklist" ist erst ab Windows XP verfgbar.
2.34 time
Gibt die aktuelle Zeit aus und ermglicht dem Benutzer die nderung der Uhrzeit.
15
Wichtige DOS-Kommandos
Bei einigen Betriebssystemversionen erfordert das ndern des Systemdatums administrative Rechte.
2.35 title
Dieser Befehl ndert die Fensterberschrift des Programmfensters.
title Beispiel
2.36 type
Gibt den (reinen Text-)Inhalt der angegebenen Datei (z. B. *.bat, *.cmd oder *.txt) aus.
16
3 Batch Befehle
3.1 Vorsicht Leerzeichen!
Fehlplazierte oder fehlende Leerzeichen knnen bei dem Programmieren einer Batch-Datei zu Fehlern fhren. Bei den nachfolgenden Beispielen ist also auf die Setzung von Leerzeichen und auf entsprechende Bemerkungen genau zu achten. Scheinbar grundlose Abbrche beim Ausfhren einer Batch-Datei knnen ebenfalls fehlplatzierten oder fehlenden Leerzeichen geschuldet sein.
3.2 @
Schaltet die Ausgabe der Befehlszeile auf dem Bildschirm nur fr den aktuellen Befehl aus und ist selbst kein eigener Befehl. Syntax
@befehl
Stapelanweisung: Ab MS-DOS bis Windows 7 Beispiel: Inhalt
echo Diese Zeile wird mit Befehlszeile ausgefuehrt...
Ausgabe
In Batch Files verhindert "@echo off" zu Beginn des Skriptes die Ausgabe aller (!) Befehlszeilen auf dem Bildschirm bis die Stapelverarbeitung beendet wird, abbricht oder mittendrin ein "@echo on" Befehl erfolgt, um z. B. Befehlszeilen tatschlich anzuzeigen und dann auszufhren. Kommentare (mit ::1 oder
17
Batch Befehle REM2 ) werden natrlich auch nicht angezeigt. Ist aber nur ein Nebeneffekt.
@echo off REM Verhindert, dass dieser Kommentar angezeigt wird.
3.3 : (Doppelpunkt)
Sprungmarke fr ein Unterprogramm bzw. eine Kommentarzeile. Sprungmarken werden bentigt, wenn mittels der Batchdatei eine Bedingung berprft und erfllt bzw nicht erfllt wird und entsprechend weiter verfahren werden soll. Mit dem Batchbefehl goto wird die Sprungmarke angesprungen. Anmerkung: Der Doppelpunkt hat auch die Funktion der Manipulation von Variablen, wenn er direkt hinter einer Variablen steht. Siehe Kapitel "Variablen" in dieser Publikation. Syntax
:NAMEDERSPRUNGMARKE
Sprungmarken knnen eine beliebige Lnge haben, von cmd behandelt werden allerdings nur die ersten 8 Zeichen, der Rest wird ignoriert. Kommen in einer Batch also :Sprungmarke1 und :Sprungmarke2 vor, so wird nur die erste beim Aufruf einer der Beiden gefunden. Beispiel: Inhalt
goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" if exist C:\[Link] goto EDITBLA
H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23REM
18
CALL
Sofern die Datei C:\[Link] existiert, wird sie mit edit geffnet, sonst wird das Unterprogramm bersprungen und die Batchdatei bei der Marke :END fortgesetzt, also beendet. Seit die Befehlserweiterungen aktiviert sind, steht in Batchdateien die Sprungmarke :EOF zur Verfgung, welche sich unsichtbar am Ende der Batch-Datei bendet.
3.4 CALL
Mit call kann man eine andere Batch-Datei aufrufen. Sobald diese beendet wurde, wird die ursprngliche Batchdatei weiter ausgefhrt. Beispiel:
@echo off echo Diese Batchdatei ruft eine andere auf. call [Link] pause REM [Link] @echo off echo Die andere Datei REM [Link]
Wenn die Befehlserweiterungen aktiviert sind (Standard ab Windows 2000) kann man auch Sprungmarken aufrufen (und auch Parameter bergeben): Beispiel:
@echo off
REM Diese Batchdatei ruft eine eigene Sprungmarke auf echo Vor dem Sprung call :sprungmarke
19
Batch Befehle
echo Nach dem Sprung pause goto end :sprungmarke echo Sprungmarke aufgerufen! goto :eof :: ":EOF" fhrt nicht zum unsichtbaren Ende der Batch-Datei, wie oben
beschrieben, sondern fhrt die Batch-Datei nach dem Aufruf der Sprungmarke fort :end exit
Die Ausgabe:
Nach dem Sprung
Sprungmarke aufgerufen!
@echo off
call :sprungmarke meinParameter echo Nach dem Sprung pause goto end :sprungmarke echo Sprungmarke aufgerufen und Parameter %1 uebergeben! goto :eof :end exit
Die Ausgabe:
Nach dem Sprung
goto :eof
Dieser Befehl springt automatisch zum Ende der Batchdatei (beendet die aktuelle Prozedur)
20
CLS
3.5 CLS
Mit cls (clear screen) wird der Bildschirm gelscht. Syntax
cls
Interner Befehl: Ab MS-DOS bis Windows 7 Beispiel: Inhalt
@echo off
echo Hier schreibe ich jetzt ganz viel Text. echo Hier kann ich z.B. hinschreiben, dass ich jemanden mag. echo. echo Aber den Text sieht man gleich sowieso nicht mehr... Hihi! cls echo War irgendetwas? pause>nul
Ausgabe
War irgendetwas?
3.6 CMD
Das Programm, das es mglich macht, DOS-Befehle auf einem NT-System zu benutzen. CMD ist die NT-Entsprechung von COMMAND3 . Syntax:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>
H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23COMMAND
21
Batch Befehle
3.7 COLOR
Mit dem Befehl COLOR kann man die Vorder- und Hintergrundfarbe verndern. Die COLOR Werte bestehen aus zwei HEX-Werten. 0 = Schwarz 1 = Dunkelblau 2 = Dunkelgrn 3 = Blaugrn 4 = Dunkelrot 5 = Lila 6 = Ocker 7 = Hellgrau 8 = Dunkelgrau 9 = Blau A = Grn B = Zyan C = Rot D = Magenta E = Gelb F = Wei
22
COMMAND
Der Befehl
COLOR 2F
3.8 COMMAND
Startet einen neuen Kommandointerpreter. Dieser kann mit exit wieder beendet werden. Syntax:
3.9 ECHO
Gibt einen Text aus oder schaltet die Befehlszeilen an/aus. Wenn ein Text ausgegeben wird, knnen dort auch VARIABLEN4 angezeigt werden, wie z. B. die Variable %ver% (in Windows XP %os%). Syntax:
H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23V A R I A B L E N
23
Batch Befehle
Beispiel: Inhalt
@echo off
echo Die aktuelle Datei heit %0. echo Die aktuelle Version Ihrer Befehls-Konsole oder -OS heit %ver%
Ausgabe
Mit echo. knnen Sie zudem leere Zeilen ausgeben. Beispiel: Inhalt
echo. echo. echo. echo So! Da waren sie. @echo off
Ausgabe
ber den Pipe-Mechanismus lsst sich darber hinaus die Zeile Geben Sie die neue Uhrzeit ein: unterdrcken: echo.|time|find /v "neue" Dabei ist die Gro-/Kleinschreibung von "neue" zu beachten oder der Schalter /I zu verwenden, denn find ist case-sensitiv! Diese Beispiele dienen allerdings
24
FOR
nur zur Demonstration, denn die Zeitausgabe wre auch ohne Pipes (aber erst ab Windows 2000) mglich mit: time /t oder einfach:
echo %time%
Sehr ntzlich ist das echo-Piping auch zur bergabe von Benutzereingaben, welche von einzelnen Befehlen abgefragt werden. Beispiel: berprfung einer Festplatte kann (da es sich beim Laufwerk C um das Systemlaufwerk handelt) erst nach einem Systemstart ausgefhrt werden. Normalerweise msste der Benutzer deswegen den Systemstart durch Eingabe von "Y" besttigen. Diese Aktion kann man in einem Batch so abbilden: echo y | chkdsk c: /f /r .
chkdsk c: /f /r
3.10 FOR
Ermglicht die Schleifenbearbeitung. Syntax:
25
Batch Befehle
RICHTIG
for Variable in Satz do (
Befehl1 Befehl2
Inhalt
@echo off
for /R %temp% %%f in (*.*) do ( echo %%f ) REM Den Befehl knnte man auch einzeilig schreiben. pause
Ausgabe
(Alle Temp-Dateien)
Zhlschleifen Mit solchen Schleifen kann man Aktionen eine bestimmte Anzahl oft ausfhren. Dazu muss man den Parameter /L angeben. Syntax:
Ausgabe:
C:\>for /L %%N IN (1, 1, 5) DO echo Nummer %%N C:\>echo Nummer 1 Nummer 1 C:\>echo Nummer 2 Nummer 2 C:\>echo Nummer 3 Nummer 3 C:\>echo Nummer 4 Nummer 4 C:\>echo Nummer 5 Nummer 5
26
FOR
verschachtelte Zhlschleife:
Ausgabe:
C:\>for /L %%N IN (1 1 5) DO (for /L %N IN (1 1 %N) DO echo Nummer %N ) C:\>(for /L %%N IN (1 1 1) DO echo Nummer %N ) C:\>echo Nummer 1 Nummer 1 C:\>(for /L %%N IN (1 1 2) DO echo Nummer %N ) C:\>echo Nummer 1 Nummer 1 C:\>echo Nummer 2 Nummer 2 C:\>(for /L %%N IN (1 1 3) DO echo Nummer %N ) C:\>echo Nummer 1 Nummer 1 C:\>echo Nummer 2 Nummer 2 C:\>echo Nummer 3 Nummer 3 C:\>(for /L %%N IN (1 1 4) DO echo Nummer %N ) C:\>echo Nummer 1 Nummer 1 C:\>echo Nummer 2 Nummer 2 C:\>echo Nummer 3 Nummer 3 C:\>echo Nummer 4 Nummer 4 C:\>(for /L %%N IN (1 1 5) DO echo Nummer %N ) C:\>echo Nummer 1 Nummer 1 C:\>echo Nummer 2 Nummer 2 C:\>echo Nummer 3 Nummer 3 C:\>echo Nummer 4
27
Batch Befehle
syntax-FOR-Files-Rooted at Path
FOR /R D R I V E :] P A T H ] %% P A R A M E T E R IN ( S E T ) DO C O M M A N D 5,6
syntax-FOR-Folders FOR /D %%parameter IN (folder_set) DO command syntax-FOR-List of numbers FOR /L %%parameter IN (start,step,end) DO command syntax-FOR-File contents FOR /F ["options"] %%parameter IN (lenameset) DO command FOR /F ["options"] %%parameter IN ("Text string to process") DO command syntax-FOR-Command Results FOR /F ["options"] %%parameter IN (command to process) DO command Beispiel: Sucht im Ordner C:\Windows\Temp rekursiv nach Dateien mit dem Namen //[Link]// und gibt die Liste aus. Die Option "token=*" ist notwendig, damit die Ausgabe zeilenweise gelesen wird und auch Pfade mit enthaltenem Leerzeichen ausgegeben werden knnen.
for /F "tokens=*" %%f in (dir /S /b C:\Windows\Temp\[Link]) do ( echo "%%f". )
Zhlvariablen in Zeichenketten einbetten Um die Zhlvariable %%f (%f auf der Kommandozeile) in einer Zeichenfolge zu verwenden, wird einfach die Variable in dem String eingebettet
FOR %%f IN (A B C D E) DO (
28
GOTO
echo mitten%%fdrinnen )
3.11 GOTO
Mit dem Batchbefehl goto wird eine Sprungmarke : (s.o.) angesprungen. Syntax
goto NAMEDERSPRUNGMARKE
Beispiel Siehe unter : (D OPPELPUNKT )7 .
3.12 IF
Der IF Befehl ermglicht eine einfache Verzweigung und wird oft zusammen mit dem GOTO8 Befehl eingesetzt. IF ermglicht hierbei sowohl die Prfung auf eine Gleichheit als auch auf das Vorhandensein von Dateien. Beispiel 1: @echo off IF exist c:\temp\[Link] echo.>c:\temp\[Link] [Link] Datei erstellt>>c:\temp\[Link] Beispiel 1 prft ob eine Logdatei vorhanden ist und erstellt ggf. eine Neue. Beispiel 2: @echo off IF "%COMPUTERNAME%" == "Bastie" GOTO WAHR REM hier landet man wenn der if-Ausdruck falsch ist GOTO WEITER :WAHR REM hier landet man wenn der if-Ausdruck wahr ist echo Willkommen Zuhause REM Jetzt wird der if Zweig verlassen GOTO WEITER :WEITER [Link] a nice Day! Beispiel 3: IF "%COMPUTERNAME%" == "Bastie" ( echo Willkommen zu Hause! ) ELSE ( echo Du bist auf Computer: %COMPUTERNAME% ) echo. Schnen Tag noch! Beachten Sie, bei der Prfung von Umgebungsvariablen niemals IF %Umgebungsvariable% == Prfwert ... zu schreiben, wenn die Umgebungsvariable
7 8
H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23%3A%20%28D O P P E L P U N K T %29 H T T P :// D E . W I K I B O O K S . O R G / W I K I /%23GOTO
29
Batch Befehle
nicht gesetzt ist; Sie erhalten sonst einen Syntaxfehler. Der Parameter /i unterbindet eine Differenzierung der Gro-/Kleinbuchstaben. ACHTUNG: Bei der Verwendung mehrerer Befehle muss zwischen Bedingung und der Klammer "(" ein Leerzeichen sein. Falsch IF Bedingung( Richtig IF Bedingung ( Befehl1 Befehl2 )
3.13 PAUSE
Unterbricht die Abarbeitung der Batchdatei und wartet auf einen Tastendruck. Syntax
pause
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP) Beispiel 1:
30
REM
Inhalt
echo.
@echo off
echo Die Batchdatei wird auf einer neuen Seite fortgefhrt. pause cls echo Hier fngt meine Batchdatei an... pause
Ausgabe
Die Batchdatei wird auf einer neuen Seite fortgefhrt. Bitte beliebige Taste drcken...
@echo off
echo Diese Zeile wird angezeigt anstelle von "Bitte beliebige Taste drcken..." pause > NUL
Ausgabe
drcken..."
Um eine Pause fr eine bestimmte Zeitdauer vorzugeben, kann der PING B EFEHL9 missbraucht werden. Das folgende Beispiel erzeugt eine Pause von etwa 10 Sekunden (nmlich 11 minus 1); durch die Ausgabeumleitung >nul wird jegliche Meldung unterdrckt. ping -n 11 localhost >nul
3.14 REM
REM leitet einen Kommentar ein. Die Zeile wird ignoriert, beachten Sie jedoch, dass REM von einem Leerzeichen / Tabulator gefolgt werden muss. Alternativ
dazu werden hug auch Sprungmarken eingesetzt, da hier nur ein statt vier Zeichen verwendet werden muss. Hug wird jedoch die Sprungmarke zur besseren bersicht doppelt hintereinander geschrieben :: Beispiel: REM kill [Link] :kill [Link] ::kill [Link]
9 Kapitel 7.1 auf Seite 63
31
Batch Befehle
3.15 START
Startet ein Programm. Syntax:
START ["Titel"] [/D <Pfad>] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME] [/WAIT] [/B] [Befehl/Programm] [Parameter]
Optionen: * "Titel" Der Titel des neuen Fensters. * /D <Pfad> Startverzeichnis * /I Die neue Umgebung soll die dem [Link] beim Aufruf bergebene sein und nicht die aktuelle Umgebung. * /MIN Startet das Fenster minimiert. * /MAX Startet das Fenster maximiert. * /SEPARATE Startet 16-BitWindows-Programm in separatem Speicherbereich. * /SHARED Startet 16-BitWindows-Programm in gemeinsamen Speicherbereich. * /LOW Startet Anwendung in IDLE-Priorittsklasse. * /NORMAL Startet Anwendung in der NORMALPriorittsklasse. * /HIGH Startet Anwendung in der HIGH-Priorittsklasse. * /REALTIME Startet Anwendung in der REALTIME-Priorittsklasse. * /WAIT Startet die Anwendung und wartet auf das Ende. * /B Startet die Anwendung ohne ein neues Fenster zu ffnen. Die Anwendung ignoriert STRG+C. Wenn die Anwendung nicht selbstndig STRG+C berprft, ist STRG+UNTBR die einzige Mglichkeit, um die Anwendung abzubrechen. * /? Gibt die Hilfe aus. Hier eine Liste der ntzlichen (System)Programme, die man so ausfhren kann: [Link] = neuer Registrierungseditor ([Link] = lterer Registrierungseditor) [Link] = Windows Ordner Explorer [Link] = Windows Taskmanager [Link] = Aufgabenplanungsmodul [Link] = Taschenrechner [Link] = Scripthost fr HTA (HTML) Scripting
32
Variablen
W/[Link] = Beides Bestandteil des Windows Scripthostes fr JS und VBS [Link] = Microsoft Windows Internet Explorer, Standardbrowser fr Windows [Link] = Mozilla Firefox, Internetbrowser [Link] = Windows-Hilfeprogramm fr DF Einwahlverbindungen [Link] = Standard-Textbearbeitungsprogramm von Microsoft [Link] = Microsoft Windows Befehlsprozessor fr Batch
3.16 Variablen
Es gibt zweierlei Arten von Variablen: Scriptvariablen und Systemvariablen. Die Scriptvariablen werden innerhalb von Schleifen eingesetzt, beginnen mit % und einem frei whlbaren Zeichen, oder einer Zeichenfolge. Systemvariablen mssen von % begonnen und von % abgeschlossen werden. Sie sind fest deniert. Die Variable %0% hat stets den Namen der aktuellen Datei. Die Variable %ver% hat immer den Namen der aktuellen Betriebssystemversion. Unter Windows XP muss %os% statt %ver% verwendet werden. Gibt man unter Windows Vista und 7 den Befehl echo %os% ein, so gibt der Computer die Version des Systems aus, auf dem das System basiert. Unter Windows Vista und Windows 7 gibt es einen Befehl namen ver, mit dem man die Version direkt angezeigt bekommt. Es gibt zwar keine direkte Variable bei Vista und Windows 7, die das Betriebssystem deniert, jedoch kann man das mit folgendem Trick umgehen: @echo off Autobefehlsanzeige ausgeschaltet ver > [Link] speichert die Ausgabe des Befehls in der Datei TMP .dat Set /p ver= < [Link] deniert die Variable des Betriebssystems. (NUR TEMPORR !) echo %ver% gibt nun die denierte Variable aus. pause>nul pause Ntzliche Stringoperation fr Variablen: Teilstring
33
Batch Befehle
Syntax
var:n,m
Ergibt den Teilstring von var, beginnend mit dem n-ten Zeichen ( von links) und einer Lnge von m Zeichen. Gezhlt wird ab 0, d.h. das erste Zeichen hat die Position 0 und nicht 1. Werden negative Werte verwendet, so wird vom Ende des Strings /von rechts nach links) gezhlt. Beispiel: Inhalt:
set str=[Link] set name=%str:0,6% echo %name%
In diesem Beispiel wird der Teilstring von str vom ersten Zeichen an mit einer Lnge von 6 Zeichen ausgegeben. Ausgabe:
myfile
Stringsubstitution Syntax
var:str1=str2
Mithilfe des Syntax var:str1=str2 kann die Zeichenkette str1 des Inhalts der Variable var durch str2 ersetzt werden. Beispiel: Inhalt:
set str="mycommand /p /m file" echo %str% set str=%str:/p /m=/t % echo %str%
In diesem Beispiel werden die Optionen /p /m des Befehls mycommand durch die Option /t ersetzt. Ausgabe:
34
Variablen
Benutzereingaben in Variablen speichern Um eine Benutzereingabe in eine Variable speichern zu knnen wird die Option /p bentigt Beispiel:
set /p EINGABE=Variable Eingeben: echo %EINGABE%
Mit Variablen Rechnen Rechnungen mit Variablen sind erst mit der Option /a mglich Beispiel:
set WERT1=2 set WERT2=21 set /a WERT1 = WERT1 * WERT2 echo %WERT1%
35
Batch Befehle
36
4 Batch Operatoren
4.1 &
Befehlsverkettung: mehrere Batch-Befehle in einer Zeile knnen hintereinander ausgefhrt werden Syntax
Ausgabe
und Tschss!
4.2 |
Befehlsverkettung mittels "pipe": der zweite Befehl bekommt die Ausgabe des ersten Befehls als Eingabe Syntax
befehl1 | befehl2
Stapelanweisung: Ab DOS (nur fr more als zweiter Befehl); allgemein verwendbar ab WindowsNT bis Windows 7 Beispiel: Inhalt
type [Link] | more Zeile 1
Ausgabe
Zeile 2 ...
37
Batch Operatoren
Zeile 24 -- More --
(nach Drcken einer beliebigen Taste werden die nchsten Zeilen angezeigt)
4.3 &&
bedingte Befehlsverkettung: der zweite Befehl wird nur ausgefhrt, wenn der erste Befehl erfolgreich war Syntax
Ausgabe
4.4 ||
bedingte Befehlsverkettung: der zweite Befehl wird nur ausgefhrt, wenn der erste Befehl fehlschlug Syntax
befehl1 || befehl2
Stapelanweisung: Ab ? bis Windows 7 Beispiel: Inhalt
copy [Link] [Link] || echo Fehler beim Kopieren! Fehler beim Kopieren!
Ausgabe
(falls [Link] nicht existiert oder [Link] nicht geschrieben bzw. berschrieben werden konnte)
38
<
4.5 <
Umleitung der Eingabe Syntax
Ausgabe
Hallo!
(set /P v= wrde eine Zeile vom Bediener erwarten; durch die Umleitung wird diese Zeile von der Datei [Link] gelesen, die zuvor mittels Umleitung der Ausgabe (siehe unten) befllt wurde.)
4.6 >
Umleitung der (Standard-)Ausgabe zu einem anderen Ziel. Wenn das Ziel eine Datei ist, wird diese neu angelegt (falls die Datei schon existiert, wird sie zuvor gelscht) Es kann aber auch nach NUL(Die Ausgabe verschwindet) oder CON(Bildschirm) umgeleitet werden Syntax
type [Link]
39
Batch Operatoren
Ausgabe
Hallo!
Neben der Standard-Ausgabe (stdout) gibt es noch eine Fehlerausgabe (stderr). Normalerweise landen die Standard-Ausgabe und die Fehler-Ausgabe am Bildschirm, wodurch der Unterschied nicht auffllt. Wenn die Standard-Ausgabe auf eine Datei umgelenkt wird, landen Fehlerausgaben immer noch auf dem Bildschirm, was oft erwnscht ist. Falls nicht, kann auch die Fehler-Ausgabe in eine Datei umgeleitet werden, und zwar mit 2> . Beispiel: dir >[Link] 2>[Link] Schreibt den Output des dir Befehles in die Datei [Link], da kein Fehler aufgetreten ist.
dir [Link] >[Link] 2>[Link]
Schreibt die Fehlermeldung des dir Befehles in die Datei [Link], da die Datei [Link] nicht existiert uns somit ein Fehler auftritt. Wenn die Fehlerausgabe in die gleiche Datei wie die Standardausgabe umgeleitet werden soll, hngt man noch 2>&1 an. Beispiel:
type [Link] > [Link] 2>&1
Der Inhalt der Datei [Link] wird in die Datei [Link] kopiert (wenn [Link] existiert).
type [Link] > [Link] 2>&1
Wenn die Datei [Link] nicht existiert, dann wird die Fehlermeldung nicht im Dos-Fenster (stdout) ausgegeben, sonderen die Ausgabe wird auch in die Datei [Link] geschrieben.
4.7 >>
Umleitung der (Standard-)Ausgabe mit Anhngen des Textes (falls die Datei schon existiert; sonst wird die Datei wie bei > (siehe oben) angelegt) Syntax
40
>>
Inhalt
Ausgabe
Haallooo!!
Hallo!
41
Batch Operatoren
42
5.1 Batchparameter
Die Parameter lassen sich jetzt folgendermaen erweitern (fr 1 setze man den jeweiligen Parameter ein):
%1 Anfhrungszeichen (") werden entfernt %f1 vollstndige Pfadbezeichnung %d1 Laufwerkbuchstabe %p1 Pfad (ohne Laufwerksbuchstabe) %n1 Dateiname %x1 Dateinamenserweiterung %s1 Pfad nur mit kurzen Verzeichnis/Dateinamen ([[Link] 8.3-Konvention]) %a1 Dateiattribute %t1 Datums- und Uhrzeitangaben der Datei (Gendert am) %z1 Gre der Datei
Die Angaben knnen auch kombiniert werden, z.B. %dp0 ist Laufwerksbuchstaben + Pfad der aktuellen Batchdatei.
5.2 Stringmanipulation
Mit folgender Syntax lassen sich Teile aus einer Zeichenkette extrahieren:
set str=Hallo set str=%str:1% echo.%str%
43
Die angegebene positive Zahl gibt an, wie viele Zeichen links bergangen werden sollen. Dieser Ausdruck liefert daher den Teilstring "allo" von "Hallo".
set str=Hallo set str=%str:-4% echo.%str%
Wird eine negative Zahl eingesetzt, so gibt ihr Betrag an, wieviele Zeichen von rechts genommen werden sollen. Dieser Ausdruck liefert daher ebenfalls "allo". ber die Angabe einer zweiten Zahl kann deniert werden, was mit dem Rest nach Auswertung der ersten Zahl entsprechend obiger Regeln geschehen soll. Whrend die erste Zahl die Zeichenkette links beschneidet, beschneidet die zweite Zahl sie rechts und zwar nach folgenden Regeln:
set str=Hallo set str=%str:1,2% echo.%str%
Eine positive zweite Zahl gibt an wie viele Zeichen ab links vom Rest genommen werden sollen. Dieser Ausdruck liefert daher "al".
set str=Hallo set str=%str:1,-2% echo.%str%
Wird eine negative zweite Zahl eingesetzt, so gibt ihr Betrag an, wie viele Zeichen vom Rest ab rechts bergangen werden sollen. Dieser Ausdruck liefert daher ebenfalls "al". Mchte man beispielsweise nur einen Teil der Zeichenkette ab links, so ist nach diesen Regeln als erste Zahl eine Null anzugeben:
set str=Hallo set str=%str:0,2% echo.%str%
44
5.3 Umgebungsvariablen
Unter DOS und Windows 9x/ME speichern alle Anwendungen und Skripte ihre Umgebungsvariablen in der gleichen Umgebung. Unter Windows NT-basierten Betriebssystemen ist dies etwas anders: Zunchst gibt es einen systemweiten Bereich. Dieser enthlt Variablen, die fr alle Benutzer und alle Anwendungen zugnglich sind. Zustzlich hat jeder Benutzer seinen eigenen Variablenraum. Jede Anwendung, die nun vom System gestartet wird, erhlt einen eigenen Variablenraum, der als Kopie aus dem der aufrufenden Anwendung erzeugt wird. ndert das Programm etwas (Wertnderung, neue Variable), wirkt sich dies nicht auf parallel gestartete Anwendungen oder das System aus. Lediglich Prozesse, die von der Anwendung gestartet werden erhalten eine Kopie des Anwendungsvariablenraumes. Dadurch ist es nicht mglich, dass Anwendungen Umgebungsvariablen setzen, die dann anschlieend in einer Batchdatei verwertbar sind. Beispiel:
@echo off set a=2 echo %a% command /c: set a=1 echo %a%
H T T P :// W W W . D O S T I P S . C O M /D T T I P S S T R I N G M A N I P U L A T I O N . P H P # _T O C 135152735
45
Das heit nicht, dass unter Windows NT und Nachfolgern der Befehl set a=1 keinen Effekt htte, sondern dieser wird in einer geschtzten Umgebung ausgefhrt, die dann auerhalb dieser Umgebung keinen Effekt mehr hat. Fr die aufgerufene Variante von command ist a nach dem set-Befehl sehr wohl gleich 1. N OCH EINE NDERUNG VARIABLEN BETREFFEND.2
set /a n=5+5
- Mit Klammern:
set /a (1+1)*(4-3) 2
H T T P :// D E . W I K I B O O K S . O R G / W I K I /B A T C H -P R O G R A M M I E R U N G : _P R O G R A M M I E R U N G S H I L F E N #P R O B L E M E _ M I T _V A R I A B L E N
46
Benutzereingaben
5.5 Benutzereingaben
Seit Windows 2000 kann man mit dem set Befehl auch Eingaben abfragen: Syntax:
set /p {variablenname}={Angezeigter Text}
5.5.1 Beispiel
@echo off set /p var=Eingabe: echo Sie haben %var% eingegeben. pause
Ausgabe:
{Pause}
Eingabe: Test
@echo off
Ausgabe:
Eingabe: {leer}
Bitte geben Sie etwas ein! Sie haben "nichts" eingegeben. {pause}
47
Syntax:
SET /P {Variablenname}=<{Dateiname}
5.6.1 Beispiel
@ECHO OFF ECHO %date% > _.txt SET /P tmp=<_.txt ECHO Das Datum heute ist: %tmp%
48
6 Programmierungshilfen
6.0.2 ndern des Editors zum Bearbeiten von Batchdateien
Wenn man im Windows Explorer mit der Rechten-Maus-Taste (RMT) auf eine *.bat klickt, so werden einem die Befehle ffnen und Bearbeiten angeboten. ffnen: fhrt die Batchdatei aus. Mit dem Befehl Bearbeiten: wird die Batchdatei in den Texteditor [Link] zum Bearbeiten geffnet. Auch wenn Notpad zum Bearbeiten von Batchdateien ausreicht, so mchte man hug doch die Batchdateien mit einem anderen, komfortableren Editor bearbeiten, der z.B. Syntaxhervorhebung (Syntaxhighlighting) beherrscht. Um einen anderen Editor ( Z . B. S YN1 ) zu verwenden, muss man in der Registry an der Stelle:
HKEY_CLASSES_ROOT\batfile\shell\edit\command
H T T P :// S Y N . S O U R C E F O R G E . N E T /
49
Programmierungshilfen
Ergebnis: 11.09.2010 - [Link] Uhr Hierbei steht ":0,8" fr die Angabe der Stellen. Mit "0,8" wird angegeben, dass die Ausgabe der Zeit bei Position 0 beginnen soll und insgesamt 8 Stellen beinhalten soll. Die maximale Stellenanzahl ist 11 (0,11). Beim Datum ist diese Angabe hier nicht ntig, da dieses standardmig im [Link]-Format ausgegeben wird. Wer aber nur das Jahr haben will, kann "%date:-4%" eingeben und erhlt damit die letzten 4 Zeichen. Fr ein sortiergerechtes Datum in der Umgebungsvariablen sortdate sorgt z.B.
set SORTDATE=%date:-4%-%date:3,2%-%date:0,2% echo %SORTDATE%
Wert der Umgebungsvariable: 2009-04-20 Beachte: In einer Batchdatei kann die Verwendung von %DATE% und insbesondere von %TIME% dazufhren, das die ausgegebene Uhrzeit sich nicht aktualisiert. Hierzu folgendes Beispiel:
@echo off echo ## Die aktuelle Zeit ist: %TIME% echo ## bitte ca. 5 Sec. warten ... ping -n 5 localhost>NUL echo ## jetzt sollten ca. 5 Sec. vergangen sein, TIME liefert %TIME%, das ist noch OK echo ## doch in der FOR Schleife wird bereits die alte Zeit verwendet. for /L %%N IN (0, 1, 3) DO ( echo %time% pause
50
) echo ## und dies bleibt fr jede Ausgabe innerhalb der FOR-Schleife so. echo. echo ## Auch in z.B. IF-Schleifen ist das so. if TRUE==TRUE ( echo 1. Zeit in der If Schleife: %TIME% echo Warte ca. 5 Sec. ping -n 5 localhost >NUL echo 2. Zeit in der If Schleife: %TIME% echo Warte nochmals ca. 5 Sec. ping -n 5 localhost >NUL echo 3. Zeit in der If Schleife: %TIME% ) echo ## Dabei ist es bereits: %TIME% pause
Damit %DATE% und %TIME% die richtigen Werte ausgeben, muss unbedingt die verzgerte Erweiterung von Umgebungsvariablen mit dem Befehl SETLOCAL2 ENABLEEXTENSIONS aktiviert werden. Hier das korrekte Beispiel:
@echo off SetLocal EnableDelayedExpansion echo ## Die aktuelle Zeit ist: %time:~0,8% echo ## bitte ca. 5 Sec. warten ... ping -n 5 localhost>NUL echo ## jetzt sollten ca. 5 Sec. vergangen sein, TIME liefert %TIME%, das ist OK echo ## Jetzt gibt auch die FOR Schleife die korrekte Zeit aus. for /L %%N IN (0, 1, 3) DO ( echo !TIME! pause ) echo. echo ## Auch in z.B. IF-Schleifen ist es jetzt richtig. if TRUE==TRUE (
2 Kapitel 2.30 auf Seite 14
51
Programmierungshilfen
echo 1. Zeit in der If Schleife: %TIME% echo Warte ca. 5 Sec. ping -n 5 localhost >NUL echo 2. Zeit in der If Schleife: %TIME% echo Warte nochmals ca. 5 Sec. ping -n 5 localhost >NUL echo 3. Zeit in der If Schleife: %TIME% ) echo ## Es ist jetzt: %TIME% EndLocal pause
@prompt -$G
call:unterroutine Hallo echo Fertig! goto:eof :unterroutine echo bergebener Parameter an Unterroutine: %1 goto:eof
Beachten Sie, dass Sie beim Aufruf von Unterroutinen per call Probleme mit Filehandles bekommen knnen. Dies liegt darin begrndet, dass ein Aufruf per
52
call als Aufruf eines Unterprogramms interpretiert wird, whrend es sich bei goto stets um Unterroutines handelt.
Anmerkung: goto:eof ist eine Spezialmarke mit der Sie stets zum Ende Ihres Skriptes (bzw. Ihrer Unterroutine) springen
@echo off set /P w= [i]nstallieren / [d]eInstallieren? REM die option /I beim if bewirkt, dass nicht REM zwischen Gross und Kleinschreibung REM unterschieden wird. if /I "%w%"=="i" goto Install if /I "%w%"=="d" goto Deinstall echo Fehler: [%w%] goto ende :Install echo "installieren" ausgewhlt goto ende :Deinstall echo "deInstallieren" ausgewhlt goto ende :ende echo. pause
53
Programmierungshilfen
Oder:
FOR /F %%i IN (BEFEHL) DO set BefehlOutput=%%i
Die Zeichenkette zwischen den einfachen Anfhrungszeichen wird dabei als Befehlszeile betrachtet und von einer untergeordneten [Link] ausgefhrt. %BefehlOutput% kann nun beliebig gebraucht werden.
Beispiel: Code:
@echo off FOR /F %%i IN (CD) DO set verzeichnis=%%i echo %verzeichnis%
Ausgabe:
C:\Programme\Batch
Vorsicht ist geboten, bei Befehlen, welche mehrzeilige Ausgaben produzieren und bei solchen, welche in ihrer Ausgabe auch Leerzeichen enthalten knnen. Da das Standardtrennzeichen ein Blank ist muss man, wenn man nicht will, dass die Variable nur bis zum Blank gefllt wird, das Standardtrennzeichen verndern. FOR /F "delims=" %%i IN (CD) DO set verzeichnis=%%i entfernt jede Art von Trennzeichen. Bei Befehlen, welche mehrzeilige Ausgaben zur Folge haben, bleibt jeweils die letzte Zeile in der Variablen erhalten.
54
set bytes=0 for /R %pfad% %%f in (%Filter%) do ( set /A DateiAnzahl += 1 echo %%f - %%zfBytes set /A bytes=bytes+%%zf ) echo. echo %dp0%Filter% echo Es sind %DateiAnzahl% Dateien vorhanden. echo Alle Dateien zusammen: %bytes%Bytes set /A kbytes=bytes/1024 echo umgerechnet sind das %kbytes% KBytes echo. pause
6.0.9 Pause
Oft ist es hilfreich, dass ein nach dem Beenden des Batch-Programms das Eingabeaufforderungsfenster offen bleibt. So kann man Ausgaben nachlesen oder evtl. aufgetretene Fehler entdecken. Nun knnte man einfach am Ende eine pause einfgen. Dabei kann der User einfach das Fenster schlieen oder ENTER drcken. Man kann aber auch einfach eine zeitliche Pause mit ping realisieren:
Dabei kann man die Zeit mit dem Parameter -n variieren. Bei installiertem R ESOURCE K IT3 steht der Befehl "sleep" zur Verfgung welcher dieselbe Funktionalitt (zeitliche Pause) bietet.
H T T P :// W W W . G O O G L E . D E / U R L ? S A = T & S O U R C E = W E B & C T = R E S & C D =1& V E D = 0CA G QF J AA& U R L = H T T P %3A%2F%2F W W W . M I C R O S O F T . C O M %2F D O W N L O A D S % 2F D E T A I L S . A S P X %3FF A M I L Y ID%3D9D467A69-57FF-4AE7-96EE-B18C4790CFFD& R C T = J & Q = M S + R E S O U R C E + K I T & E I =SE T GS8H6FY F M-Q A I 2 T R T & U S G = AFQ J CNEU L 30 W Z L C_ L 61S A IB S G99 A 7L C C R G
55
Programmierungshilfen
@echo off if not "%1"=="" goto %1 start /MIN [Link] /C "%nx0 begin" goto:eof :begin echo Hallo, ich laufe minimiert! pause goto:eof
Anmerkung: Sollte die Command-Processor-Option "DelayedExpansion" in der Registry aktiviert sein (siehe unter Hilfe "cmd /?"), lsst sich ein "!" als Variablenname nicht verwenden. In diesem Fall -bzw. sinnvollerweise immer- den Variablennamen ndern auf x oder y oder # oder @.... Beispiel:
@set #=||(set #=1&start "%dpnx0" /min cmd /c %0 %*&set #=&goto :eof)
56
kann. In dem Fall klappt es allerdings nur, wenn beim ersten Start kein Parameter bergeben wurde.
@echo off if "%1"=="" ( start /WAIT /LOW /B [Link] /V /C %s0 weiter_machen goto:eof ) echo Jetzt laufe ich mit niedriger Prioritt! echo berprfe es im Taskmanager! pause
Funktionsweise: Das Prinzip ist eigentlich ganz einfach. Wenn kein Parameter bergeben wird, wird angenommen, das die Batchdatei zum ersten mal gestartet wurde. Die if "%1"=="" Bedingung ist also erfllt. Mittels start wird dann dieselbe Batchdatei mit vernderter Prioritt gestartet, allerdings mit einem angehngten Parameter weiter_machen (Knnte auch irgendwas anderes sein!) Somit ist beim nchsten Aufruf die if "%1"=="" Bedingung nicht mehr erfllt und der normale Teil der Batchdatei wird abgearbeitet. Wenn man der Batchdatei einen Parameter bergeben mchte (z.B. ein Dateiname o..) muss man alle Parameter verschieben:
@echo off if "%2"=="" ( start /WAIT /LOW /B [Link] /V /C %s0 %1 weiter_machen goto:eof ) echo Jetzt laufe ich mit niedriger Prioritt! echo Nun kann [%1] bearbeitet werden... pause
Anmerkungen: Normalerweise knnte man statt %s0 auch "%0" bei der [Link] Zeile verwenden. Allerdings klappt das nicht richtig, wenn Leerzeichen in der Batch Datei vorhanden sind. Mit %s0 wird der komplette Pfad zur Batchdatei als "Kurznamen" angegeben. In dem Pfad kommt dann keine Leerzeichen vor.
57
Programmierungshilfen
Das Problem
set test=1 if "%test%"=="1" ( set test=2 echo Wert von test im IF-Block: %test% ) echo Wert von test nach IF-Block: %test%
Man sollte meinen, dass der Wert von %test% in beiden Ausgaben 2 ist. Doch leider ist es nicht so. Denn innerhalb des IF-Blocks wird das Neusetzen der Variable test von 1 auf 2 noch nicht aktiv und somit ist das Ergebnis Wert von test im IF-Block: 1 Erst nach dem IF-Block ist der Wert aktualisiert: Wert von test nach IF-Block: 2
Lsung: [Link] /V In einer Batchdatei die mit cmd /V gestartet wurde, werden Variablen innerhalb von Befehlsblcken aktualisiert. Jedoch kann man sie nicht gewohnt mit %test% ansprechen, sondern mit !test!
@echo off if "%1"=="" ( start /WAIT /B [Link] /V /C "%0" machen! goto:eof ) set test=1 if "%test%"=="1" ( set test=2 echo Wert von test-Prozent in dem IF-Block: %test% echo Wert von test-Ausrufezeichen in dem IF-Block: !test!
58
[Link] >NUL
Es knnte aber sein, dass evtl. Fehler dennoch ausgegeben werden. Das liegt daran, das die Programme in dem Fall auf stderr statt stdout schreiben. Um auch in dem Fall die Ausgabe zu unterdrcken, kann man mit einem zustzlichen 2>&1 die Ausgaben von stderr auf stdout umleiten. Da stdout dann nach NUL verschoben wird, sieht man absolut nichts:
@echo off Echo msgbox"Text",0,"Fenstername" >[Link] ping localhost -n 3 -w 1000 >NUL start [Link] pause
59
Programmierungshilfen
Erklrung: Man erzeugt hier mithilfe des Umleitungssymbols (Eng.: pipe) > einen Temporren VBScript, der in der Lage ist, ein Messagefenster zu erzeugen. Dies sorgt in Anwendungen fr mehr bersicht und Professionalitt.
Wobei das ";" ein Zeichen sein muss das in jeder zu verarbeitenden Zeile vorkommt. Dies ist am schnellsten. Will man wirklich jede Zeile zhlen unabhngig vom Inhalt, dann kann man auch folgenden Befehl verwenden:
FOR /F "delims=:" %%A IN (findstr /N .* "[Link]") DO echo %%A Zeilen
60
Jetzt bedarf es noch des SET-Befehl zum Berechnen der aktuellen Zeile und setLocal EnableDelayedExpansion, dann knnte das Script folgendermaen aussehen:
@echo off setLocal EnableDelayedExpansion set COUNT=0 set COUNTMAX=0 FOR /F "eol=# tokens=1,2,3 " %%A IN (find /c ";"[Link]) DO set COUNTMAX=%%C for /f "eol=# tokens=1 delims=;" %%j in ([Link]) do ( set /A COUNT +=1 title %0 - !COUNT! Zeilen von !COUNTMAX! bearbeitet echo Tue etwas mit dem Token %%j REM der ping wird nur zur Verzgerung ausgefhrt damit man der Titel Zeile besser verfolgen kann. ping -n 1 localhost >NUL )
61
Programmierungshilfen
62
7 Netzwerkumgebung
7.1 ping
Kann verwendet werden, um die Verbindung zu einem anderen Rechner zu testen. Wenn die Gegenseite antwortet, werden Informationen ber die IPNummer und zur Verbindungsqualitt angezeigt. Zu beachten ist dabei, dass aus einer ausbleibenden Antwort nicht zwangslug auf einen missglckten Verbindungsversuch geschlossen werden darf: manche Administratoren unterbinden diese Art Test aus Sicherheitsgrnden. Beispiel
C:\>ping [Link]
Ausgabe
Ping [Link] [[Link]] mit 32 Bytes Daten: Antwort Antwort Antwort Antwort von von von von [Link]: [Link]: [Link]: [Link]: Bytes=32 Bytes=32 Bytes=32 Bytes=32 Zeit=67ms Zeit=35ms Zeit=34ms Zeit=39ms TTL=57 TTL=57 TTL=57 TTL=57
Ping-Statistik fr [Link]: Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust), Ca. Zeitangaben in Millisek.: Minimum = 34ms, Maximum = 67ms, Mittelwert = 43ms C:\>
Hinweis Dies lsst sich durch einen Trick mit dem nd Befehl auch automatisieren:
ping [Link] | find "TTL" || goto hostnotfound
63
Netzwerkumgebung
7.2 ipcong
Durch den Parameter /help erhlt man kurze Hilfe. Der Aufruf des Befehls ipcong ohne Parameter teilt die eigene IP-Adresse mit. Durch den Befehl ipcong lsst sich die IP-Adresse von Netzwerkverbindungen (Ethernetkarten) verwalten. Beispiel
C:\>ipconfig
Ausgabe
Windows-IP-Konfiguration Ethernetadapter VMware Network Adapter VMnet8: Verbindungsspezifisches IP-Adresse. . . . . . . Subnetzmaske. . . . . . Standardgateway . . . . DNS-Suffix: . . . . . : [Link] . . . . . : [Link] . . . . . : [Link]
Ethernetadapter VMware Network Adapter VMnet1: Verbindungsspezifisches IP-Adresse. . . . . . . Subnetzmaske. . . . . . Standardgateway . . . . DNS-Suffix: . . . . . : [Link] . . . . . : [Link] . . . . . : [Link]
Ethernetadapter LAN-Verbindung 3: Verbindungsspezifisches IP-Adresse. . . . . . . Subnetzmaske. . . . . . Standardgateway . . . . C:\> DNS-Suffix: . . . . . : . . . . . : . . . . . : [Link] [Link] [Link] [Link]
Ausgabe
64
ipcong
Windows-IP-Konfiguration Hostname. . . . . . . Primres DNS-Suffix . Knotentyp . . . . . . IP-Routing aktiviert. WINS-Proxy aktiviert. DNS-Suffixsuchliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : : : : : : cestmoi [Link] Unbekannt Nein Nein [Link] [Link]
Ethernetadapter VMware Network Adapter VMnet8: Verbindungsspezifisches Beschreibung. . . . . . Adapter for VMnet8 Physikalische Adresse . DHCP aktiviert. . . . . IP-Adresse. . . . . . . [ ... ] DNS-Suffix: . . . . . : VMware Virtual Ethernet . . . . . : 01-23-45-67-89-AB . . . . . : Nein . . . . . : [Link]
Der Administrator kmmert sich um das Problem und sagt, der Server sei wieder OK, aber noch immer kommen Fehlermeldungen und Homepages knnen nicht angezeigt werden. Dann kann es daran liegen, dass der DNS-Cache noch
65
Netzwerkumgebung
die Fehlmeldung gespeichert hat, und dieser muss geleert werden. Anstelle den Rechner neu zu starten gibt man folgendes ein
C:\>ipconfig /flushdns Windows-IP-Konfiguration Der DNS-Auflsungscache wurde geleert. C:\>
7.3 tracert
Mit tracert kann man die Route vom eigenen PC zur Zieladresse verfolgen, und evtl. Rckschlsse ziehen, ob und warum eine Verbindung hngt. Beispiel
C:\>tracert [Link]
Ausgabe
Routenverfolgung zu [Link] [[Link]] ber maximal 30 Abschnitte: 1 <1 ms <1 ms <1 ms [Link] 2 24 ms 18 ms 19 ms [Link] [[Link]] 3 139 ms 35 ms 36 ms [Link] [[Link]] 4 40 ms * 43 ms [Link] [[Link]] 5 41 ms 34 ms 35 ms [Link] [[Link]] 6 39 ms 38 ms 37 ms [Link] [[Link]] 7 41 ms 43 ms 37 ms [Link] [[Link]] 8 38 ms 38 ms 36 ms [Link] [[Link]] Ablaufverfolgung beendet. C:\>
7.4 netstat
Dieser Befehl zeigt alle offenen TCP/IP/ICMP/UDP (usw...) Verbindungen an.
66
NET
netstat
Mit der Erweiterung -p Protokoll lassen sich auch nur Verbindungen zum Entsprechenden Protokoll auslesen(meist TCP):
netstat -p TCP
7.5 NET
NET ist ein Tool zur berwachung und Manipulation von Netzwerkaktivitten sowie Windows-Diensten. Es hat einen recht groen Funktionsumfang, von dem ich hier jedoch nur einige kurz vorstelle.
Wenn fr die Verbindung die Eingabe von Zugangsdaten erforderlich ist knnen diese auch mit angegeben werden:
NET USE x: /USER:benutzer \\[Link]\freigabe "passwort"
Wenn fr einen Rechner Zugangsdaten bentigt werden und diese nicht oder falsch angegeben wurden, so wird der Benutzer nach diesen gefragt. Es kann auch nur ein Benutzer angegeben werden indem das Passwort durch einen Asterisk (*) ersetzt wird. Die Eingabe von NET USE ohne Parameter zeigt bereits verbundene Laufwerke an. Bei Windows-Freigaben wird auch ein Status angezeigt, bei SambaFreigaben jedoch nicht.
67
Netzwerkumgebung
Empfnger kann dabei sein: IP-Adresse Domain Domain mit Benutzerangabe (/domain:name) Rechnername im lokalen Netzwerk Benutzername im lokalen Netzwerk Asterisk fr alle erreichbaren (lokalen) Rechner
Hinweis: Da NET SEND leider sehr oft fr Spam missbraucht wird/wurde empehlt es sich es abzuschalten. Dies geschieht ber den Windows-Service "Nachrichtendienst". Dadurch knnen weder Nachrichten gesendet noch empfangen werden. (NET STOP Messenger)
Die Eingabe von NET START ohne Parameter zeigt die aktuell gestarteten Windows-Dienste an.
68
NET
Einfache Eingabe von NET VIEW zeigt alle Computer an, wenn ein Computername mit angegeben wird werden die Freigaben angezeigt. Dies funktioniert nur bei Windows-Rechnern. UNIX-Rechner mit Samba-Freigaben werden zwar in der bersicht angezeigt, die Freigaben knnen aber nicht abgefragt werden.
Dieser Befehl allein zeigt nur alle Benutzer des Rechners an. (2000) (XP)
Net User <name>
Durch diesen Befehl wird die Einstellung des Benutzerkontos des Benutzers <name> angezeigt. (2000) (XP)
Net User <name> <passwort> /add
69
Netzwerkumgebung
Dieser Befehl verndert das Passwort des Benutzers. Wenn anstatt des passworts ein Stern * angegeben wird, dann wird das neue Passwort abgefragt. (2000) (XP)
Net User <name> /expires:never
Damit wird eingestellt, dass dass Passwort des Benutzers <name> niemals abluft. (2000) (XP)
Net User <name> /active:Yes Net User <name> /active:No
Damit wird das entsprechende Benutzerkonto aktiviert oder deaktiviert. (2000) (XP)
Net User <name> /passwordchg:Yes Net User <name> /passwordchg:No
Damit wird eingestellt, ob der Benutzer sein eigenes Passwort verndern darf. (2000) (XP)
Net User <name> /comment:"Herr Maier vom Verkauf"
Damit wird eine Zeit vorgegeben, nach der der Benutzer sein Password ndern muss. (2000) (XP)
70
NET
Damit wird eingestellt, wo sich die Benutzerdaten benden. Der Ort der Benutzerdaten wird in der Umgebungsvariable USERPROFILE gespeichert. (2000) (XP)
Net User <name> /countrycode=049
Damit wird es dem Benutzer erlaubt, sich von anderen Rechnern aus an diesem Rechner anzumelden. Anstatt * kann hier auch eine Liste von Computernamen angegeben werden. Dann darf sich der Benutzer nur von diesen Computern anmelden. (2000) (XP) Hinweis: Diese Arbeitsvorgnge gehen auch mit der Windows Benutzerkontensteuerung. Diese kann erreicht werden durch [Start] [Einstellungen] [Systemsteuerung] [Benutzer] Hinweis: Der Name des aktuell angemeldeten Benutzers ist in des Umgebungsvariable UserName. Hinweis: Hilfe zum Befehl Net User erhlt man durch Eingabe von Net User /help Beispiel: Um den Benutzer Otto mit dem Password Frieda einzurichten, kann folgende Batch-Datei ausgefhrt werden:
net net net net net user user user user user Otto Otto Otto Otto Otto Frieda /add /expires:never /comment:"Default USER from This Computer" /active:Yes
71
Netzwerkumgebung
72
8 Beispiele
8.0.7 [Link]
Eine kleine Batchdatei, um mit [Link] direkt einen bestimmten REG-Zweig anzuspringen:
set LastKey="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix" set Key=HKEY_ CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit reg add %Key% /f /v "LastKey" /d %LastKey% start [Link]
Erluterung: LastKey ist der Reg-Schlssel, der als Letztes angezeigt wurde und dieser wird beim Start von regedit direkt angesprungen, diesen Schlssel kann man nach Belieben anpassen. Key ist der Reg-Schlssel in dem sich der Wert "LastKey" bendet. LastKey wird mittels reg add in die Registry eingespielt und danach wird regedit gestartet. Das Ganze funktioniert allerdings nur, wenn [Link] noch nicht luft. Und hier noch eine kleine Batchdatei, um mit [Link] Werte aus der Registry auszulesen:
73
Beispiele
8.0.8 TaskList-Abfrage
Eine Routine um das Laufen eines Prozesses mittels [Link] festzustellen. In diesem Beispiel wird geprft, ob [Link] luft.
@echo off set ProgEXE=[Link] set tempdatei=%temp%\[Link] tasklist /FI "IMAGENAME eq %ProgEXE%" /FO CSV>%tempdatei% for /F "skip=2 tokens=1 delims=," %%f in (%tempdatei%) do ( echo gefiltert: [%%f] if "%%f"==""%ProgEXE%"" echo Prozess %ProgEXE% luft goto ende ) echo Prozess %ProgEXE% luft nicht! goto ende :ende del %tempdatei%
Alternativ, ohne obige temporre Datei tempdatei zu bentigen, kann man beispielsweise unter Windows XP folgendes verwenden:
TaskList /FI "IMAGENAME eq %ProgEXE%" 2>NUL | Find "%ProgEXE%" >NUL IF ERRORLEVEL == 1 ( ECHO NOT Running. GOTO Ende ) ELSE ( ECHO Running. GOTO Ende )
74
NET
echo. echo ### Manuelle Dienste ### echo. call:M helpsvc "Hilfe und Support" call:M ImapiService "IMAPI-CD-Brenn-COM-Dienste" echo. echo ### nicht bentigte Dienste Deaktivieren ### echo. call:D cisvc "Indexdienst" call:D ERSvc "Fehlerberichterstattungsdienst"
echo. echo ### Automatische Dienste ### echo. call:A CryptSvc "Kryptografiedienste call:A MSIServer "Windows Installer"
:A echo %2 auf Automatisch set Parameter=auto net start %1 goto machen :M echo %2 auf Manuell set Parameter=demand net stop %1 goto machen :D
75
Beispiele
rem Systemstart Gertetreiber, der vom Startladeprogramm geladen wird. rem system Gertetreiber start whrend der Kernelinitialisierung. rem auto automatischer start, nach systemstart, vor Benutzeranmeldung. rem demand Dienst, der manuell gestartet werden muss. rem disabled Dienst deaktivieren
:machen echo on sc config %1 start= %Parameter% @echo off echo. echo. goto:eof
@echo off set RegHotfixListe=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix set RegHotfixInfo=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Windows XP\SP3 for /F "delims=\ tokens=7" %%f in (reg query "%RegHotfixListe%") do
76
NET
:Anzeigen reg query "%RegHotfixListe%\%HotFixNr%" /v Installed | FIND "0x1">NUL if "%errorlevel%"=="0" ( set installiert=ja call:KB_Info ) ELSE ( set installiert=nein ) echo %HotFixNr% - Ist Installiert: %installiert% if not "%InstalledBy%"=="" echo %HotFixNr% installiert von %InstalledBy% if not "%InstalledDate%"=="" echo %HotFixNr% am %InstalledDate% echo. goto:eof
:KB_Info set InstalledBy= for /F "tokens=3" %%c in (reg query "%RegHotfixInfo%\%HotFixNr%" /v InstalledBy 2^>NUL ^| FIND "InstalledBy") do ( set InstalledBy=%%c ) set InstalledDate=
77
Beispiele
for /F "tokens=3" %%c in (reg query "%RegHotfixInfo%\%HotFixNr%" /v InstalledDate 2^>NUL ^| FIND "InstalledDate") do ( set InstalledDate=%%c ) goto:eof
@echo off rem "[Link]" sendet einzelne Druckdateien an bel. Drucker direkt. rem eignet sich besonders bei Standard Drucksprachen wie Postscript und HPGL/2. rem Laesst sich in Windows bequem einbinden, z.B rechte Maustaste Senden an Plotter :voreingestellt set server=[Link] rem server --- IP von Printserver/oder Name von Freigaberechner --set druckerbeschreibung=[Link] Freigabename EPSON rem druckerbeschreibung --- damit der Drucker leichter identifiziert werden kann --set drucker=EPSONNT rem drucker --- das muss der Freigabename im Netzwerk/auf dem Freigaberechner sein --if %1 == drucker01 goto drucker01 if %1 == drucker02 goto drucker02 if %1 == canon goto canon goto datei :drucker01 shift goto datei :drucker02
78
NET
set server=[Link] set druckerbeschreibung=HP DJ 755CM im Sekretariat set drucker=hpdj755-tcp shift goto datei :canon set server=[Link] set druckerbeschreibung=Canon s/w Laser im EG set drucker=CanonLBP shift goto datei :datei if %~1 == goto aufruf goto plot :plot echo. echo Dateiname : %1 echo Druckserver : %server% echo Freigabename: %drucker% echo Beschreibung: %druckerbeschreibung% echo. print /d:\\%server%\%drucker% %~1 goto:eof :aufruf echo. echo aufruf : pl [plotter] Datei echo plotter : drucker01, drucker02, canon, (voreingestellt ist drucker01) echo.
Anmerkung zur Nutzung dieses Scriptes: Der Printbefehl schickt die Datei OHNE Interpretation direkt an den Drucker. Eine Bilddatei im JPEG-Format wrde statt der Grak also lediglich einen haufen wirrer Zeichen ergeben. Der Drucker muss in der Lage sein, selbst ASCII-Zeichen zu verarbeiten und aus zu geben. Dies ist bei lteren Druckern (vor ca. 1996 sicher) immer der Fall. Heute beherrschen meist nur noch PostScript-fhige Drucker diese
79
Beispiele
Fhigkeit. "Billigen" GDI-Druckern muss man etwas auf die Sprnge helfen mit dem verwendeten "Druckprozessor" im Windows-Druckertreiber. Zum Umschalten zunchst die Druckerbersicht ffnen - Zu nden unter Start|Drucker und Faxgerte Dann die Eigenschaften des gewnschten Druckers ausrufen (Rechtsklick|Eigenschaften) Auf dem Reiter "Erweitert" den Button "Druckprozessor..." klicken In dem erscheinenden Dialogfeld gibt es 2 Felder mit Eintrgen. Im rechten Feld (Standartdatentypen) ndet sich neben verschiedenen anderen auch der Eintrag "Text". Diesen markieren und dann alles mit OK wieder schlieen. Der Druckprozessor von Windows ist nun in der Lage, Ausgaben entsprechend zu Interpretieren und dem GDI-Drucker als Grak zu liefern. Es knnen aber nur stur 80 Zeichen (maximal) auf ca. 60 Zeilen verteil werden. Manchmal sind es bis zu 66 Zeilen.
8.0.12 Copy
Kopieren von Dateien. Der Befehl copy [Link] c:\temp kopiert die Datei [Link] aus dem aktuellen Ordner in den Ordner c:\temp. Der Befehl copy c:\[Link] c:\temp kopiert die Datei [Link] aus dem Ordner c:\ in den Ordner c:\temp Batch-Dateien kennen beim Kopieren nur Ordner mit max. 8+3 Buchstaben deshalb muss man statt z.B.:
copy [Link] c:\programme
80
NET
Kombiniert in der gegebenen Reihenfolge zwei oder mehrere durch "+" verbundene Textdateien in einer neuen Gesamtdatei. In diesem Zusammenhang muss auf die Bedeutung der Parameter "/A" (fr ASCII-Format, der Standardwert) und "/B" (fr Binr-Format ) eingegangen werden, die jedem Dateinamen in obigem Beispiel mit einem Leerzeichen Abstand vorangehen knnen. DOS-Textdateien enthalten ein Dateiendezeichen (Dezimal 26, Hexadezimal 1A). Beim Kopiervorgang darf in der Gesamtdatei nur als letztes Zeichen ein Dateiendezeichen erscheinen, sonst wrde der Text nach der ersten Endmarkierung nicht mehr angezeigt. "copy" kopiert ohne das abschlieende Zeichen und fgt als letztes wieder eines zur Gesamtdatei hinzu. Mchte man Dateien mit binren Inhalten zusammenfgen (z.B. PostScriptDateien, die auch binre Abschnitte enthalten knnen), so wrde ohne Parameter "/B" ebenfalls nur bis zu einem zufllig vorkommenden Dateiendezeichen kopiert und damit das Ergebnis unbrauchbar.
8.0.13 Message-Ping
Mit Hilfe des folgenden Scripts kann man Windows um eine ntzliche Funktionalitt erweitern. Mit Hilfe von mping erhlt man eine Nachricht, sobald der gepingte Computer wieder erreichbar ist. Um das Script global zu verwenden, muss es z.B. als "[Link]" in "WindowsInstallationsordner\System32" gespeichert werden und kann von nun an z.B. mit "mping [Link]" aufgerufen werden.
@echo off :: IF IF IF IF wenn kein remote Host angegeben ist, dann gehe zu :Syntax [%1]==[] GOTO Syntax [%1]==[/?] GOTO Syntax [%1]==[/h] GOTO Syntax [%1]==[/help] GOTO Syntax
:mainloop :: pinge den Host 1 mal und leite die Ausgabe nach nul um (keine sichtbare Ausgabe)
81
Beispiele
ping %1 -n 1 >nul :: speichere den Errorlevel in die Variable status set status=%errorlevel% :: sende eine Nachricht sobald der remote Host online ist if %status%==0 (msg %username% %1 online && exit 0) :: minimalistische Fortschrittsanzeige (Set /P i=.) < NUL :: sleep workaround (wer eine bessere, einfachere, genauere & universellere Mglichkeit kennt bitte korrigieren) :: pinge den lokalen Computer 10 mal ping localhost -n 10 >nul :: gehe zurck zum anfang goto mainloop :Syntax echo. echo Syntax: %~n0 [Hostname oder IP] echo. echo mping echo. echo Pingt einen offline Host und gibt eine Meldung echo aus, sobald er wieder online ist echo.
82
NET
Damit aber nicht defekte Laufwerke einfach blind defragmentiert werden, habe ich eine etwas aufwendige Prozedur eingebaut, die die Laufwerke mit chkdsk erst berprft. Wenn dabei ein Fehler auftritt, wird mit fsutil das dirty Bit gesetzt. Das bewirkt, dass beim nchsten Systemstart die Fehler behoben werden. Auerdem werden die Partitionen in dem loop ausgelassen, welche schon als dirty markiert sind. Eine kleine Routine war auch ntig, damit Netzwerklaufwerke ausgelassen werden.
@echo off cd /d C:\ :loop for %%i in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do ( if exist %%i:\NUL call:defrag %%i ) echo. echo pause... ping localhost -n 10 >NUL goto loop :defrag call:check %1 if "%ok%"=="nein" ( echo Laufwerk %1: wird ausgelassen echo. goto:eof ) echo. echo. echo chkdsk %1: /v chkdsk %1: if %errorlevel% NEQ 0 ( if %errorlevel% NEQ 2 ( echo %1: chkdsk Fehler!!! echo Errorlevel: %errorlevel% echo. echo setzte dirty-Bit: fsutil dirty set %1: echo.
83
Beispiele
echo Versuche Reparatur chkdsk %1: /v /x if %errorlevel% EQU 2 ( echo Fehler bereinigt! ) else ( echo Errorlevel: %errorlevel% echo. goto:eof ) ) ) echo defrag %1: -f defrag %1: -f if %errorlevel% NEQ 0 ( pause exit ) rem pause... ping localhost -n 1 >NUL goto:eof :check set ok=nein net use | find /i "%1:" >NUL if not errorlevel 1 ( echo %1: ist ein Netzlaufwerk goto:eof ) fsutil dirty query %1: for /F "tokens=5" %%f in (fsutil dirty query %1:) do ( if not "%%f"=="NICHT" ( rem Laufwerk ist als fehlerhaft markiert goto:eof ) ) set ok=ja goto:eof
84
NET Als Alternative gibt es das Open Source Program J K D EFRAG1 , welches auch alle Laufwerke nacheinander defragmentiert.
@echo off echo Attribute...................: echo Laufwerk....................: echo kompletter Pfad.............: echo Dateiname...................: echo Ordnerpfad..................: echo kompletter Pfad (kurze Form): echo Aenderungsdatum.............: echo Dateierweiterung............: echo Dateigroesse................: pause
Hinweis: Falls die Attribute des eigenen Batch-Skripts ausgelesen werden sollen, so muss der Parameter Null verwendet werden (Beispielsweise %p0). Eine Kombination ist auch mglich, z.B: %dp0 (Laufwerk + Pfad)
@echo off if exist [Link] del [Link] > nul echo Bitte geben Sie den ersten Teil der IP ein: set /p ip=
H T T P :// W W W . K E S S E L S . C O M /J K D E F R A G /
85
Beispiele
for /L %%N IN (1, 1, 255) DO ( echo Die IP: %ip%%%N wird nun angepingt ping %ip%%%N -n 1 -w 1 | find "TTL" && echo %ip%%%N >> [Link] ) cls type [Link] pause >nul
Hinweis: Die Datei [Link] wird nicht gelscht, damit man sie fr weitere Zwecke benutzen kann.
8.0.17 Hosts Datei mit einem Aliasnamen und der aktuellen IP-Adresse aktualisieren
Hug werden Webserver oder hnliche Programme unter Angabe eines Aliasnamens installiert, damit sie leicht auf einen anderen Rechner verschoben werden knnen, falls der ursprngliche Rechner defekt ist. Oder die Aplikationluft unter VM-Ware auf einen Laptop bei dem sich die IP-Adressen hug ndern. Dann kann mit dem Skript der Hostnamenalias mit der aktuellen IP-Adresse aktualisiert werden. Idealerweise wird das Script automatisch beim Start von Windows oder beim Anmelden des Anwenders ausgefhrt.
@echo off set HOST_ALIAS=myserver [Link] set HOST_FILE=%SystemRoot%\System32\drivers\etc\hosts set TEMP_FILE=%TEMP%\[Link] REM vorhandenen Eintrag entfernen und den Rest in TEMP-Datei schreiben type %HOST_FILE% | find /v "myserver" > %TEMP_FILE% REM Neuen Eintrag wieder hinzufgen for /F "tokens=15" %%i in (ipconfig ^| find "IP Ad") do set IP=%%i echo %IP% %HOST_ALIAS%>>%TEMP_FILE% echo ## Added %IP% %HOST_ALIAS% to the hostsfile REM Temp-File nach %SystemRoot%\System32\drivers\etc\hosts kopieren REM Die Datei Hosts darf nicht mit "move" verschoben werde, sondern muss kopiert werden, da sonst der Hostname nicht gefunden werden kann.
86
NET
@echo off VER |find /i "Windows 95" >NUL IF NOT ERRORLEVEL 1 GOTO 9598ME VER |find /i "Windows 98" >NUL IF NOT ERRORLEVEL 1 GOTO 9598ME VER |find /i "Windows Millennium" >NUL IF NOT ERRORLEVEL 1 GOTO 9598ME VER | find "XP" > nul IF %errorlevel% EQU 0 GOTO XP VER | find "2000" > nul IF %errorlevel% EQU 0 GOTO 2000 VER | find "NT" > nul IF %errorlevel% EQU 0 GOTO NT VER | find "Microsoft Windows [Version 6.1" > nul IF %errorlevel% EQU 0 GOTO Sieben VER | find "Microsoft Windows [Version 6" > nul IF %errorlevel% EQU 0 GOTO Vista VER | find "Microsoft Windows [Version 5" > nul IF %errorlevel% EQU 0 GOTO 2003 goto unknown goto end :unknown echo MsgBox "Betriebssystem unbekannt", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :9598ME
87
Beispiele
echo MsgBox "Sie haben 95, 98 oder ME", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :NT echo MsgBox "Sie haben Windows NT", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :2003 echo MsgBox "Sie haben Windows 2003", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :2000 echo MsgBox "Sie haben Windows 2000", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :XP echo MsgBox "Sie haben Windows XP", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :Vista echo MsgBox "Sie haben Windows Vista oder Windows 7 RC", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :Sieben echo MsgBox "Sie haben Windows 7 ", VbInformation + VbOKOnly, "Ihr Betriebssystem" >%TEMP%\[Link] goto end :end START %TEMP%\[Link]
88
NET
@echo off call:clean %TEMP% IF NOT "%TEMP%" == "%TMP%" ( call:clean %TMP% ) pause goto:eof :clean del /q "%~1\*.*" FOR /D %%D IN ("%~1\*") DO ( rmdir /s /q "%%D" ) goto:eof
(Wahrscheinlich erhlt man ein paar Fehler, wenn z.B. Dateien geffnet sind) Neue Version Eine Version fr Win XP/2000/Win7
Echo off del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Temp\*.*" del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Temporary Internet Files\*.*" del /f /s /q "%HOMEPATH%\Lokale Einstellungen\Verlauf\*.*" del /f /s /q "%windir%\Temp\*.*" del /f /s /q "%windir%\Prefetch\*.*" del /f /s /q "%windir%\Temp\*.*" rmdir /s /q "%HOMEPATH%\Lokale Einstellungen\Temp\" rmdir /s /q "%windir%\Prefetch\" diskperf -n ipconfig /flushdns
Einfach den Text kopieren in eine Textdadei und zur .bat machen.
89
Beispiele
90
9 Zusatz-Tools
Viele Aufgaben sind mit der Batchprogrammierung bzw. mit Windows-Scripting alleine kaum oder nur sehr umstndlich zu lsen. So kann das Umwandeln von Dateien (Textersetzungen) aufgrund der nicht ganz sauberen Behandlung von Sonder- bzw. Operationszeichen zur Qual werden. Erstaunlich fr ein Betriebssystem, welches seit nun mehr ber 10 Jahren - mit Windows 95 - diese Restriktionen ofziell beseitigt hat. Oft knnen dafr OpenSource-Tools wie SFK ("S WISS F ILE K NIVE ")1 und S ED2 sehr erfolgreich in die Batch-Programmierung eingebunden werden. Fr das Verpacken und Komprimieren von Dateien lsst sich das freie 7-Z IP3 gut ber die Kommandozeile steuern. Das GPL-Programm Gnuplot eignet sich hervorragend fr die Visualisierung von Daten im CSV-Format und lsst sich einfacher und schneller scripten als MS Excel oder [Link] Calc. Zum Herunterladen von Dateien und Webseiten kann Wget verwendet werden. Auch fr Batch-Dateien gibt es diverse kostenlose Batch-Compiler, die die Datei in eine ausfhrbare .exe-Datei umwandeln und den Code vor Manipulation und/oder Copyright-Verletzungen schtzen. Fr gehobenere Scripting-Ansprche und komplexere Vorhaben mit einer lngeren Lebensdauer sollten dezidierte Scripting-Sprachen z.B. Awk, P ERL4 , Python, Ruby oder Tcl in Erwgung gezogen werden, fr die glcklicherweise das GNU-Projekt freie und quelloffene Alternativen bietet. Eine kostenlose Alternative zum Batching bietet Microsoft selbst auf seiner Homepage mit dem Tool PowerShell. Weitere Tools sind im Abschnitt "WebLinks" aufgelistet!
1 2 3 4
91
Zusatz-Tools
92
10 Referenz
10.1 Liste aller internen und externen Befehle (entspricht der Ausgabe des Befehls help unter Windows XP)
ASSOC AT ATTRIB BREAK CACLS CALL CD CHCP CHDIR CHKDSK CHKNTFS CLS CMD COLOR COMP COMPACT CONVERT Zeigt Dateierweiterungszuordnungen an bzw. ndert sie. Legt eine Zeit fest, zu der Befehle und Programme auf diesem Computer ausgefhrt werden. Zeigt Dateiattribute an bzw. ndert sie. Schaltet die erweiterte berprfung fr STRG+C ein bzw. aus. Zeigt Datei-ACLs (Access Control List) an bzw. ndert sie. Ruft eine Batchdatei aus einer anderen Batchdatei heraus auf. Zeigt den Namen des aktuellen Verzeichnisses an bzw. ndert diesen. Zeigt die aktive Codepagenummer an bzw. legt diese fest. Zeigt den Namen des aktuellen Verzeichnisses an bzw. ndert diesen. berprft einen Datentrger und zeigt einen Statusbericht an. Zeigt die berprfung des Datentrgers beim Start an bzw. verndert sie. Lscht den Bildschirminhalt. Startet eine neue Instanz des WindowsBefehlsinterpreters. Legt die Hintergrund- und Vordergrundfarben fr die Konsole fest. Vergleicht den Inhalt zweier Dateien oder Stze von Dateien. Zeigt die Komprimierung von Dateien auf NTFSPartitionen an bzw. ndert diese. Konvertiert FAT-Volumes in NTFS. Das aktuelle Laufwerk kann nicht konvertiert werden.
93
Referenz
COPY DATE DEL DIR DISKCOMP DISKCOPY DOSKEY ECHO ENDLOCAL ERASE EXIT FC FIND FINDSTR FOR FORMAT FTYPE
Kopiert eine oder mehrere Dateien an eine andere Stelle. Zeigt das Datum an bzw. legt dieses fest. Lscht eine oder mehrere Dateien. Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf. Vergleicht den Inhalt von zwei Disketten. Kopiert den Inhalt von einer Diskette auf eine andere Diskette. Bearbeitet Befehlseingaben, ruft Windows-Befehle zurckt und erstellt Macros. Zeigt Meldungen an bzw. schaltet die Befehlsanzeige ein oder aus. Beendet den lokalen Gltigkeitsbereich von Umgebungsnderungen in einer Batchdatei. Lscht eine oder mehrere Dateien. Beendet das Programm [Link] (Befehlsinterpreter). Vergleicht zwei oder mehr Stze von Dateien und zeigt die Unterschiede an. Sucht eine Zeichenkette in einer oder mehreren Datei(en). Sucht Zeichenketten in Dateien. Fhrt einen angegebenen Befehl fr jede Datei in einem Dateiensatz aus. Formatiert einen Datentrger fr die Verwendung mit Windows. Zeigt die Dateitypen an, die bei den Zuordnungen fr die entsprechenden Dateierweiterungen verwendet werden bzw. ndert sie. Zeigt unter Windows XP SP2 die Mac-Adresse an. Setzt den Windows-Befehlsinterpreter auf eine markierte Zeile in einem Batchprogramm. Ermglicht Windows, Sonderzeichen im Grakmodus anzuzeigen. Zeigt Hilfeinformationen zu Windows-Befehlen an. Verarbeitet Ausdrcke in einer Batchdatei abhngig von Bedingungen. Erstellt, ndert oder lscht die Bezeichnung eines Volumes. Erstellt ein Verzeichnis Erstellt ein Verzeichnis. Konguriert ein Systemgert.
94
Liste aller internen und externen Befehle (entspricht der Ausgabe des Befehls help unter Windows XP) MORE MOVE NET USE Zeigt Ausgabe auf dem Bildschirm seitenweise an. Verschiebt ein oder mehrere Dateien von einem Verzeichnis in ein anderes. Verbindet einen Computer mit einer freigegebenen Ressource oder trennt die Verbindung und zeigt Informationen ber die Verbindungen eines Computers an. Der Befehl steuert auerdem stndige Netzwerkverbindungen. Legt den Suchpfad fr ausfhrbare Dateien fest oder zeigt diesen an. Hlt die Ausfhrung einer Batchdatei an und zeigt eine Meldung an. Wechselt zu dem Verzeichnis, das durch PUSHD gespeichert wurde. Druckt eine Textdatei. ndert die Eingabeaufforderung. Speichert das aktuelle Verzeichnis, und wechselt dann zu einem anderen Verzeichnis. Entfernt ein Verzeichnis. Stellt lesbare Daten von einem beschdigten Datentrger wieder her. Leitet Kommentare in einer Batchdatei bzw. [Link] ein. Benennt eine Datei bzw. Dateien um. Benennt eine Datei bzw. Dateien um. Ersetzt Dateien. Lscht ein Verzeichnis. Setzt oder lscht die Umgebungsvariablen bzw. zeigt sie an. Beginnt den lokalen Gltigkeitsbereich von Umgebungsnderungen in einer Batchdatei. Verndert die Position ersetzbarer Parameter in Batchdateien. Sortiert die Eingabe. Startet ein eigenes Fenster, um ein bestimmtes Programm oder einen Befehl auszufhren. Weist einem Pfad einen Laufwerksbuchstaben zu. Zeigt alle zurzeit laufenden Aufgaben inklusive der Dienste an. Bricht einen laufenden Prozess oder eine Anwendung ab oder beendet ihn bzw. sie.
PATH PAUSE POPD PRINT PROMPT PUSHD RD RECOVER REM REN RENAME REPLACE RMDIR SET SETLOCAL SHIFT SORT START SUBST TASKLIST TASKKILL
95
Referenz
Zeigt die Systemzeit an bzw. legt sie fest. Legt den Fenstertitel fr das Eingabeaufforderungsfenster fest. Zeigt die Ordnerstruktur eines Laufwerks oder Pfads grasch an. Zeigt den Inhalt einer Textdatei an. Zeigt die Windows-Version an. Legt fest, ob berwacht werden soll, ob Dateien korrekt auf den Datentrger geschrieben werden. Zeigt die Datentrgervolumebezeichnung und die Seriennummer an. Kopiert Dateien und Verzeichnisbume.
96
11 WebLinks
11.1 Weblinks
HTTP :// WWW. HEISE . DE / CT /03/16/136/ DEFAULT. SHTML 1
ct 16/2003, S. 136:
Windows-Befehlszeile HTTP :// WWW. SS 64. COM / NT / INDEX . HTML 2 NT/XP Batch Befehle (en) Umfangreiche Informationen ber Batchprogrammierung unter NT/2000/XP HTTP :// WWW. FPSCHULTZE . DE / 4 Batch Scripting Site mit vielen Beispielen HTTP :// SVEN - OF - NINE . DE / SITE / DOKU . PHP / FAQ : BATCH 5 Umfangreiche Funktionssammlung fr Batchprogrammierer [Link] HTTP :// DOWNLOAD. KNOWWARE . DE / BATCH . PDF6 Leicht verstndliche Einfhrung HTTP :// PUBLIBZ . BOULDER . IBM . COM / CGI - BIN / BOOKMGR _OS390/BOOKS/IEA2B510/CCONTENTS?SHELF=IEA2BK32&DN=SA227598-01&DT=200106261339387 englischsprachiges JCL Benutzerhandbuch HTTP :// WWW. PLOGMANN . NET / W /2/54/ INDEX . HTM8 - Optionen des Befehls XCOPY HTTP :// WWW. ANTONIS . DE / DOS /# DOWNLOAD / 9 Diverse Beispielskripte
HTTP :// WWW. ADMINI . DE 3
1 2 3 4 5 6 7
H T T P :// W W W . H E I S E . D E / C T /03/16/136/ D E F A U L T . S H T M L H T T P :// W W W . S S 64. C O M / N T / I N D E X . H T M L H T T P :// W W W . A D M I N I . D E H T T P :// W W W . F P S C H U L T Z E . D E / H T T P :// S V E N - O F - N I N E . D E / S I T E / D O K U . P H P / F A Q : B A T C H H T T P :// D O W N L O A D . K N O W W A R E . D E / B A T C H . P D F H T T P :// P U B L I B Z . B O U L D E R . I B M . C O M / C G I - B I N / B O O K M G R _OS390/BOOKS/ IEA2B510/CCONTENTS?SHELF=IEA2BK32&DN=SA22-7598-01&DT= 20010626133938 H T T P :// W W W . P L O G M A N N . N E T / W /2/54/ I N D E X . H T M H T T P :// W W W . A N T O N I S . D E / D O S /# D O W N L O A D /
8 9
97
WebLinks
HTTP :// WWW. EASY- CODING . DE / SHELLSCRIPTING . HTML ? S =5 FB 492 FD 4 B 515 B 0 C 880795 A 6 A 7 D Forum ber Shellscripting HTTP :// HOME . MNET- ONLINE . DE / HORST. MUC / MAIND. HTM11 Eine Sammlung von Zusatztools fr Batch-Skripter HTTP :// WWW. AXEL - HAHN . DE / AXEL / PAGE _ COMPI / BAT _ INDEX . HTM12 Viele weitere Informationen und Tools zum Thema HTTP :// WWW. SCRIPT- EXAMPLE . COM / THEMEN /W INDOWS _B ATCH . PHP13 Batch Dateien erstellen fr absolute Beginner
11.1.1 Tutorials
B ATCH FOR RUNAWAYS PART I14 - Tutorial Batch I B ATCH FOR RUNAWAYS PART II15 - Tutorial Batch II B ATCH FOR RUNAWAYS PART III16 - Tutorial Batch III D IE F OR-S CHLEIFE17 - Tutorial "FOR" VARIABLEN18 - Tutorial Umgebungsvariablen
11.1.2 Referenzen
M ICROSOFT T ECHNET19 - Windows Server 2008 - Command Reference (en) M ICROSOFT T ECHNET20 - Windows Vista - Command-Line Tools Technical Reference (en) M ICROSOFT T ECHNET21 - Windows Server 2003 - Befehlszeilenreferenz (de)
10 11 12 13 14
H T T P :// W W W . E A S Y - C O D I N G . D E / S H E L L S C R I P T I N G . H T M L ? S = 5 F B 492 F D 4 B 515 B 0 C 880795 A 6 A 7 D 92 E F 5 C 4 A E D 29 C H T T P :// H O M E . M N E T - O N L I N E . D E / H O R S T . M U C / M A I N D . H T M H T T P :// W W W . A X E L - H A H N . D E / A X E L / P A G E _ C O M P I / B A T _ I N D E X . H T M H T T P :// W W W . S C R I P T - E X A M P L E . C O M / T H E M E N /W I N D O W S _B A T C H . P H P H T T P :// W W W . A D M I N I S T R A T O R . D E /W O R K S H O P _B A T C H _ F O R _R U N A W A Y S _-_P A R T _ I_-_B E I S P I E L _F I N D L O N G P A T H .B A T _B E D E N K L I C H _ L A N G E _P F A D E _ F I N D E N . HTML H T T P :// W W W . A D M I N I S T R A T O R . D E /W O R K S H O P _B A T C H _ F O R _R U N A W A Y S _-_P A R T _ II_-__E I N _ B I S S C H E N _H A N D W E R K S Z E U G . H T M L H T T P :// W W W . A D M I N I S T R A T O R . D E /W O R K S H O P _B A T C H _ F O R _R U N A W A Y S _-_P A R T _ III_-_D A T U M S -_ U N D _Z E I T V A R I A B L E N _ I M _B A T C H . H T M L H T T P :// W W W . A D M I N I S T R A T O R . D E /T U T O R I A L _ Z U R _FOR-S C H L E I F E . H T M L H T T P :// W W W . A D M I N I S T R A T O R . D E /W I E _A R B E I T E _ I C H _ M I T _B A T C H _ U M G E B U N G S V A R I A B L E N %3F_E R S T E L L U N G _U M G A N G _E R W E I T E R U N G E N _V E R %C3% A4 N D E R U N G E N . H T M L H T T P :// T E C H N E T . M I C R O S O F T . C O M / E N - U S / L I B R A R Y / C C 754340. A S P X H T T P :// T E C H N E T . M I C R O S O F T . C O M / E N - U S / L I B R A R Y / C C 722159. A S P X H T T P :// T E C H N E T . M I C R O S O F T . C O M / D E - D E / L I B R A R Y / C C 785423. A S P X
15 16 17 18
19 20 21
98
22
H T T P :// T E C H N E T . M I C R O S O F T . C O M / E N - U S / L I B R A R Y / B B 490890. A S P X
99
WebLinks
100
12 Autoren
Edits 2 1 2 2 7 13 2 1 10 1 1 7 1 20 1 User A LIZDAIR1 A QUARIA NR2 AUTOR3 A ZAL4 B ASTIE5 B ATCHSCRIPTER 936 B LINGNUE7 B OERN 998 C ODEJUNKIE9 C ORNELIUS WASMUND10 C REIBENS11 D ANIEL B12 D ER L EO13 D IRK H UENNIGER14 D ON QUICHOT15
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :A L I Z D A I R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :A Q U A R I A NR H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :A U T O R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :A Z A %C3%AB L H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :B A S T I E H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R : B A T C H S C R I P T E R 93 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :B L I N G N U E H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :B O E R N 99 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :C O D E J U N K I E H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R : CO R N E L I U SWA S M U N D H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :C R E I B E N S H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :D A N I E L _B H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :D E R _L E O H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :D I R K _ HU E N N I G E R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :D O N Q U I C H O T
101
Autoren E ( NIX )16 E MES 2 K17 E NOMIL18 F. F. F JODOR19 F EHLERKORREKTUR20 F LOMINATOR21 G ENRICH22 G LOBAL 66723 H ADDOCK24 H ARDY 4225 H EULER 0626 H JHERBERT27 J AHO 489628 J AN29 J ODDEL30 J UETHO31 K LARTEXT32 K LAUS E IFERT33 K LEIDERSACK34 KOMIKAA35 K RONOS 86 M36
1 2 1 1 2 2 21 4 1 1 5 4 2 2 1 15 1 16 1 1 6
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :E%5E%28 N I X %
29
H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :E M E S 2 K H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :E N O M I L H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :F._F._F J O D O R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R : FE H L E R K O R R E K T U R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :F L O M I N A T O R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :G E N R I C H H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :G L O B A L 667 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :H A D D O C K H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :H A R D Y 42 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :H E U L E R 06 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :H J H E R B E R T H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :J A H O 4896 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :J A N H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :J O D D E L H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :J U E T H O H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :K L A R T E X T H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :K L A U S _E I F E R T H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :K L E I D E R S A C K H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :K O M I K A A H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :K R O N O S 86 M
102
Weblinks MF-WARBURG37 M ICHAEL F REY38 M ICHAEL F REY T OOL39 M ICHFRM40 M JCHAEL41 N OMIKE42 O CRHO43 P C - WORLD44 P EPERKORN45 P RINCE K ASSAD46 P RODUNIS47 P ROG48 R ESEKA49 R OBERT50 R OBIDOG51 S CHNEIJO52 S E 459853 S TEFAN M AJEWSKY54 S TEFAN WICHMANN55 S TEFAN T IRAN56
7 5 2 7 11 1 3 2 1 1 1 6 6 3 10 25 1 1 1 1
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :MF-W A R B U R G H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :M I C H A E L F R E Y H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R : MI C H A E LFR E YTO O L H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :M I C H F R M H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :M J C H A E L H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :N O M I K E H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :O C R H O H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :P C - W O R L D H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :P E P E R K O R N H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :P R I N C E _ KA S S A D H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :P R O D U N I S H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :P R O G H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :R E S E K A H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :R O B E R T H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :R O B I D O G H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S C H N E I J O H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S E 4598 H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S T E F A N _ MA J E W S K Y H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S T E F A N _ WICHMANN H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S T E F A N T I R A N
103
Autoren S YS .B AK57 T HE PACKER58 T HERES NO GLOBAL WARMING59 T IMON .F REITAG60 T SCHFER61 U WE . KAUSCH62 W EISS N IX63 W OLFGANGBEYER64 W ORKER65
2 6 1 10 1 2 2 1 3
57 58 59 60 61 62 63 64 65
H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :S Y S .B A K H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :T H E P A C K E R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :T H E R E S _ N O _ G L O B A L_W A R M I N G H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :T I M O N . FR E I T A G H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :T S C H %C3% A4 F E R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :U W E . K A U S C H H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :W E I %C3%9FN I X H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R : WO L F G A N G B E Y E R H T T P :// D E . W I K I B O O K S . O R G / W / I N D E X . P H P ? T I T L E =B E N U T Z E R :W O R K E R
104
Abbildungsverzeichnis
GFDL: Gnu Free [Link] Documentation License.
cc-by-sa-3.0: Creative Commons Attribution ShareAlike 3.0 License. [Link] cc-by-sa-2.5: Creative Commons Attribution ShareAlike 2.5 License. [Link] cc-by-sa-2.0: Creative Commons Attribution ShareAlike 2.0 License. [Link] cc-by-sa-1.0: Creative Commons Attribution ShareAlike 1.0 License. [Link] cc-by-2.0: Creative Commons Attribution [Link] cc-by-2.0: Creative Commons Attribution [Link] cc-by-2.5: Creative Commons Attribution [Link] cc-by-3.0: Creative Commons Attribution [Link] 2.0 2.0 2.5 3.0 License. License. License. License.
GPL: GNU General Public License. [Link] PD: This image is in the public domain. ATTR: The copyright holder of this le allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other use is permitted. EURO: This is the common (reverse) face of a euro coin. The copyright on the design of the common face of the euro coins belongs to the European
105
Abbildungsverzeichnis
Commission. Authorised is reproduction in a format without relief (drawings, paintings, lms) provided they are not detrimental to the image of the euro. LFK: Lizenz Freie Kunst. [Link] CFR: Copyright free use. EPL: Eclipse Public License. [Link]
106
Abbildungsverzeichnis
107