Batch-Programmierung: Wichtige DOS-Kommandos
Man unterscheidet bei DOS-Befehlen grundsätzlich zwischen internen und externen Befehlen. Interne Befehle sind Bestandteil der Shell selbst, während externe Befehle als eigene Programme vorliegen. Die DOS-Befehle, die interessant für die Batch-Programmierung sein könnten, sind im Folgenden aufgelistet:
[Bearbeiten] assoc
Mit Hilfe dieses Befehls kann man die Dateierweiterungen bearbeiten bzw. anzeigen lassen.
assoc [.dateiendung[=Dateibeschreibung]]
[Bearbeiten] attrib
Ändert das Dateiattribut. Möglich sind "schreibgeschützt" (+r/-r), "versteckt" (+h/-h) und "archiv" (+a/-a)
[Bearbeiten] cacls
Ändert die Rechte (Access Controll List) auf NTFS Partitionen oder zeigt diese an.
cacls *.* /E /T /G Bob:C
Fügt beispielsweise dem User Bob das Recht "Ändern" für alle Dateien und Ordner im aktuellen und allen Unterordnern hinzu. Achtung! Standardmäßig werden Rechte ersetzt!
[Bearbeiten] 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 ausgeführt, so wird der Pfad des aktuellen Verzeichnisses ausgegeben.
relative Angaben:
Die Eingabe von "cd .." wechselt in das nächsthöhere Verzeichnis ("cd ..\.." zwei Ebenen höher usw.).
Die Eingabe von "cd ORDNERNAME" wechselt in den Unterordner ORDNERNAME.
absolute Angaben:
Die Eingabe von "cd \" wechselt in das Hauptverzeichnis auf dem derzeitig befindlichen Laufwerk.
Die Eingabe von "cd \ORDNERNAME" wechselt absolut in den Ordner ORDNERNAME auf dem derzeitig befindlichen Laufwerk.
Die Eingabe von "LAUFWERKSBUCHSTABE:" (ohne vorangestelltes "cd") wechselt in das aktuelle Verzeichnis des gewählten Laufwerks LAUFWERKSBUCHSTABE.
Die Eingabe von "cd LAUFWERKSBUCHSTABE:\ORDNERNAME" wechselt absolut in den Ordner ORDNERNAME auf dem gewählten Laufwerk von LAUFWERKSBUCHSTABE jedoch nicht von einem Laufwerk auf ein anderes.
Pfadangaben mit Leerschlägen (Bsp "C:\program files\") müssen in Anführungs-/Schlusszeichen eingeschlossen sein.
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* für \windows oder \winnt) abgekürzt werden. Dies ist jedoch im Batchbetrieb nicht ratsam.
Remotesysteme:
Pfade von nicht als Laufwerken verbundenen Remotesystemen können (Berechtigung vorausgesetzt) entweder über die Administrative Freigabe oder durch das Verbinden eines Netzlaufwerks angesprochen werden. Beispiel für 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!)
[Bearbeiten] chcp
Anzeige der aktuellen CodePage oder Setzen einer neuen CodePage (change codepage)
chcp [nnn]
Beispiele für nnn:
- 437 – Die ursprüngliche Zeichensatztabelle des IBM-PC
- 720 – Arabisches Alphabet
- 737 – Griechisches Alphabet
- 850 – westeuropäische Sprachen (DOS-Latin-1)
- 857 – Türkisches Alphabet
- 866 – Kyrillisches Alphabet
[Bearbeiten] cls
Löscht den Bildschirminhalt (clear screen)
[Bearbeiten] comp oder fc
Vergleicht den Inhalt zweier Dateien und stellt die Unterschiede dar (compare / file compare).
[Bearbeiten] (x)copy/robocopy
Mit dem Befehl copy können eine Datei oder mehrere Dateien kopiert werden.
xcopy ist die erweiterte Version von copy, die mehr Optionen bietet. Diese ist nicht in allen Windows-Versionen verfügbar.
Das weitaus mächtigere robocopy ist ab Vista standardmäßig wieder verfügbar, bei Windows XP und 2000 fehlt dieses Programm zunächst. Microsoft stellt robocopy aber im Windows Server 2003 Resource Kit Tools 2003 auch für diese Betriebssystemversionen bereit.
Mit dem Befehl copy /b "DATEI" + "DATEI" "NEUE DATEI" kann man Dateien zusammenfügen.
[Bearbeiten] date
Gibt das aktuelle Datum aus und ermöglicht 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 time funktioniert das analog.
Bei einigen Betriebssystemversionen erfordert das Ändern des Systemdatums administrative Rechte.
XP: Die Ausgabe des Datumsformates ist abhängig von den Einstellungen in den Regions- und Sprachoptionen (Systemsteuerung)
[Bearbeiten] del / erase
Löscht eine Datei, die sich im aktuellen Verzeichnis befindet. Als Parameter muss mindestens der Dateiname angegeben werden. Weitere Parameter sind optional:
- /p - sollen mehrere Dateien gelöscht werden, muss jede einzelne Löschung bestätigt werden.
- /f - auch schreibgeschützte Dateien werden gelöscht.
- /s - löscht auch Dateien, die sich in den Unterverzeichnissen befinden.
- /q - Unterbindet Bestätigung.
Beispiel:
erase H:\zulöschendedatei.bat
[Bearbeiten] deltree
Löscht 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.
[Bearbeiten] 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, Größe oder Datenträgerbezeichnung wird unterdrückt.
- /c - Die Dateigröße wird mit einem Punkt als Trennzeichen zwischen jeweils drei Dezimalstellen angegeben, also beispielsweise 343.232 (Standardeinstellung). Soll dies unterdrückt werden, geben Sie als Option /-c an.
- /p - Bei jedem Seitenumbruch wird die Ausgabe unterbrochen, bis der Anwender eine Taste drückt.
- /on - Gibt das Verzeichnis alphabetisch sortiert aus.
- /w - Mehrere Einträge 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 möglich, 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.
[Bearbeiten] Kombinationen
dir /w/o/s/p durchsucht den aktuellen Pfad inklusive Unterordner nach einer Datei und stellt das Ergebnis seitenweise dar.
[Bearbeiten] edit
Mit edit wird ein Editor geöffnet, zum Beispiel zum Bearbeiten von Batch- oder Textdateien.
[Bearbeiten] exit
Beendet die Eingabeaufforderung/kehrt zu Windows zurück.
[Bearbeiten] find
Mit dem Befehl find kann - auch in mehreren Dateien - nach einer Zeichenfolge gesucht werden.
Auch find kann mit Parametern gesteuert werden:
find /iignoriert Groß-/Kleinschreibung beim Suchbegrifffind /vZeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.find /cZeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.find /nZeigt die Zeilen mit ihren Zeilennummern an.
[Bearbeiten] 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 bootfähig sind.
[Bearbeiten] help
Die Hilfe-Funktion steht in allen Windows-Systemen (außer Win9X, d. h. 95/98/ME) zur Verfügung. Der allgemeine Befehl hierzu lautet help. Als Ausgabe wird eine Liste mit einem Teil der verfügbaren Kommandozeilen-Befehle ausgegeben. Diese Listen umfasst den Befehlsnamen (linke Spalte) und eine Beschreibung (rechte Spalte). Soll ein Befehl genauer erklärt werden, so lautet die Eingabe help BEFEHLSNAME oder auch BEFEHLSNAME /?. Diese Eingabe in die Kommandozeile fördert detaillierte Informationen und z.T. auch Beispiele zu einem Befehl zu Tage. Es werden jedoch nicht alle Befehle die es im DOS gibt angezeigt.
[Bearbeiten] ipconfig
Informationen über die Windows-IP-Konfiguration
Der ipconfig-Befehl hat folgende Optionen:
- /all - Zeigt zusätzliche Details
- /release - Gibt die zugeteilte IP-Adresse zurück
- /renew - Bezieht eine neue IP-Adresse
[Bearbeiten] keyb
Lädt Tastaturtreiber. keyb gr,,c:\dos\keyboard.sys lädt den deutschen Tastaturtreiber (keyboard.sys muss sich im Verzeichis c:\dos\ befinden)
[Bearbeiten] loadhigh
Lädt Programme in freie UMB Upper-Memory-Blocks
[Bearbeiten] md
Der Befehl md (make directory) legt ein neues Verzeichnis an.
[Bearbeiten] more
Mit der Ausgabeumleitung | more (bspw.: type [Dateiname] | more ) wird bei Seitenwechsel zur Bestätigung aufgefordert.
Damit besteht die Möglichkeit über mehrere Seiten führende 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 möglich, zwei Befehle miteinander auf eine spezielle Weise zu verbinden. Dabei wird der erste Befehl ausgeführt, 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 möglich den Inhalt einer Datei an eine andere Datei anzuhängen.
So kann man zum Beispiel mit: more "C:\eins.txt" >> "D:\zwei.txt" den Inhalt der "eins.txt" an den Inhalt der "zwei.txt" anhängen. "eins.txt" wird dabei nicht verändert.
[Bearbeiten] move
Verschieben von einer oder mehrerer Dateien von einem Verzeichnis in ein anderes.
oder
ein Verzeichnis umbenennen
move test test_neu
[Bearbeiten] netsh
Ohne Parametereingabe ergibt sich ein neuer Kontext. Weitere Hilfe mit: ?
Beispiel : netsh interface dump > ipconf1.dat
Diese Zeile als Batch-Datei ausgeführt legt die momentane IP-Konfiguration in einer Datei namens ipconf1.dat ab. Umgekehrt kann aus einer Datei z. B. namens ipconf2.dat eine neue IP-Konfiguration geladen und übernommen werden:
netsh -f ipconf2.dat
So lässt sich eine IP-Konfiguration ohne Umherklicken in Systemmenüs ablegen und (modifiziert) wieder zurückholen.
[Bearbeiten] 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 ausgeführt, so werden alle aktuellen Pfade ausgegeben.
[Bearbeiten] prompt
Legt das Aussehen der Eingabezeile fest.
[Bearbeiten] rd / rmdir
Der Befehl rd oder rmdir (remove directory) löscht ein Verzeichnis, wenn dieses leer ist.
Parameter:
- /s Löscht einen ganzen Verzeichnisbaum mit Dateien
- /q Löscht ohne Nachfrage ganze Verzeichnisbäume. Kann in Batch-Dateien praktisch sein.
Der Verzeichnisname darf keine Wildcards enthalten ('*' oder '?').
rmdir /s /q C:\temp
[Bearbeiten] ren oder rename
Datei(en) umbenennen.
[Bearbeiten] set
set setzt eine temporäre Umgebungsvariable oder gibt die Variablenwerte aus. Temporär bedeutet jeweils nur für die aktuelle cmd Session.
[Bearbeiten] setlocal
setlocal Steuert die Begrenzung des Gültigkeitsbereiches von Änderungen. Wird mit endlocal beendet.
[Bearbeiten] start
Öffnet neues Fenster für 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 test.bat
/WAIT = Wartet bis Anwendung geschlossen wird.
/NORMAL = Startet Anwendung in der NORMAL-Prioritätsklasse.
/D = Danach folgt das Startverzeichnis
[Bearbeiten] 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 hinzufügt, wird das Beenden erzwungen.
taskkill /f iexplore.exe /t
[Bearbeiten] tasklist
Dieser Befehl listet alle aktiven Prozesse auf, die gerade auf diesem Computer laufen. Damit lässt sich zum Beispiel der Name eines zu beendenden Prozesses ermitteln (siehe unten: taskkill). Mit einem hinzugefügten /nh werden die Spaltenüberschriften ausgeblendet.
Der Befehl "tasklist" ist erst ab Windows XP verfügbar.
[Bearbeiten] time
Gibt die aktuelle Zeit aus und ermöglicht dem Benutzer die Änderung der Uhrzeit. Wird der Befehl mit dem Parameter /t aufgerufen, so wird nur die aktuelle Zeit ausgegeben. time kann auch als Variable benutzt werden, so kann man zum Beispiel mit %time:~0,5% die ersten 5 Zeichen übernehmen.
Beispiele:
C:\>time Aktuelle Zeit: 10:03:04,63 Geben Sie die neue Zeit ein: c:\>echo %time% 10:03:04,63 c:\>echo %time:~0,5% 10:03
Bei einigen Betriebssystemversionen erfordert das Ändern der Systemzeit administrative Rechte.
[Bearbeiten] title
Dieser Befehl ändert die Fensterüberschrift des Programmfensters.
title Beispiel
[Bearbeiten] type
Gibt den (reinen Text-)Inhalt der angegebenen Datei (z. B. *.bat, *.cmd oder *.txt) aus.
[Bearbeiten] Color
Gibt die Farbe an
Farbattribute werden durch ZWEI hexadezimale Ziffern angegeben - die erste bezieht sich auf den Hintergrund, die zweite auf den Vordergrund. Jede Ziffer kann einen der folgenden Werte annehmen:
0 = Schwarz 8 = Dunkelgrau 1 = Dunkelblau 9 = Blau 2 = Dunkelgrün A = Grün 3 = Blaugrün B = Zyan 4 = Dunkelrot C = Rot 5 = Lila D = Magenta 6 = Ocker E = Gelb 7 = Hellgrau F = Weiß