Batch-Programmierung: Wichtige DOS-Kommandos
Aus Wikibooks
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] attrib
Ändert das Dateiattribut. Möglich sind "schreibgeschützt" (+r/-r), "versteckt" (+h/-h) und "archiv" (+a/-a)
[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 %~d0%~p0" 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] 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 Betriebssystemsversionen 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.
Bei einigen Betriebssystemversionen erfordert das Ändern des Systemdatums administrative Rechte.
[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.
Funktioniert nicht immer.
[Bearbeiten] deltree
Löscht Verzeichnis(se) inkl. untergeordnete Dateien.
Unter Windows XP lautet der Befehl rmdir. Deltree kennt es nicht mehr.
[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 ganzen Rechner 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] fdisk
Partitioniert die Festplatte.
[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 das 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] 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 eben diesem Puffer bekommt.
[Bearbeiten] move
Verschieben von einer oder mehrerer Dateien von einem Verzeichnis in ein anderes.
[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.
Beispiel: rmdir /s /q C:\temp
[Bearbeiten] ren oder rename
Datein(en) umbenennen.
[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] 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
setlocale Steuert die Begrenzung des Gültigkeitsbereiches von Änderungen. Wird mit endlocal beendet.
[Bearbeiten] time
Gibt die aktuelle Zeit aus und ermöglicht dem Benutzer die Änderung der Uhrzeit.
Bei einigen Betriebssystemversionen erfordert das Ändern des Systemdatums administrative Rechte.
[Bearbeiten] type
Gibt den (reinen Text-)Inhalt der angegebenen Datei (z. B. *.bat, *.cmd oder *.txt) aus.
[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] title
Dieser Befehl ändert die Fensterüberschrift des Programmfensters.
title Beispiel
[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 Prozese beendet, und wenn man /f hinzufügt, wird das Beenden erzwungen.
taskkill /f iexplore.exe /t
[Bearbeiten] assoc
Mit Hilfe dieses Befehls kann man die Dateierweiterungen bearbeiten bzw. anzeigen lassen.
assoc [.dateiendung[=Dateibeschreibung]]