Batch-Programmierung: Wichtige DOS-Kommandos

Aus Wikibooks
Wechseln zu: Navigation, Suche


Man unterscheidet bei Batch-Befehlen grundsätzlich zwischen internen und externen Befehlen (vergleiche FreeDOS-Kompendium: Befehle). Interne Befehle sind Bestandteil der Shell selbst, während externe Befehle als eigene Programme vorliegen. Befehle, die interessant für die Batch-Programmierung sein könnten, sind im Folgenden aufgelistet:

assoc[Bearbeiten]

Mit Hilfe dieses Befehls kann man die Dateierweiterungen bearbeiten bzw. anzeigen lassen.

assoc [.dateiendung[=Dateibeschreibung]]

attrib[Bearbeiten]

Ändert das Dateiattribut. Möglich sind "schreibgeschützt" (+r/-r), "versteckt" (+h/-h), "systemdatei" (+s/-s) und "archiv" (+a/-a)

cacls[Bearbeiten]

Ä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!

cd / chdir[Bearbeiten]

Ü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!)

comp oder fc[Bearbeiten]

Vergleicht den Inhalt zweier Dateien und stellt die Unterschiede dar (compare / file compare).

(x)copy/robocopy[Bearbeiten]

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.


del / erase[Bearbeiten]

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

deltree[Bearbeiten]

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.

dir[Bearbeiten]

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.

Kombinationen[Bearbeiten]

dir /w/o/s/p    durchsucht den aktuellen Pfad inklusive Unterordner
nach einer Datei und stellt das Ergebnis seitenweise dar!

edit[Bearbeiten]

Mit edit wird ein Editor geöffnet, zum Beispiel zum Bearbeiten von Batch- oder Textdateien.

Ab Windows NT nur noch in 32 bit Systemen enthalten.

find[Bearbeiten]

Mit dem Befehl find kann - auch in mehreren Dateien - nach einer Zeichenfolge gesucht werden.

Auch find kann mit Parametern gesteuert werden:

  • find /i ignoriert Groß-/Kleinschreibung beim Suchbegriff
  • find /v Zeigt alle Zeilen an, die die Zeichenfolge NICHT enthalten.
  • find /c Zeigt nur die Anzahl der die Zeichenfolge enthaltenden Zeilen an.
  • find /n Zeigt die Zeilen mit ihren Zeilennummern an.

format[Bearbeiten]

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.

loadhigh[Bearbeiten]

Lädt Programme in freie UMB Upper-Memory-Blocks

md / mkdir[Bearbeiten]

Der Befehl md (make directory) legt ein neues Verzeichnis an.

more[Bearbeiten]

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 | (fehlt es auf der Tastatur, ist es auch bei hierzu gedrückt gehaltener ALT-Taste und der Eingabe der Zahlenfolge 124 auf dem Ziffernblock zu erzeugen; das Zeichen erscheint dann nach dem Loslassen der ALT-Taste). 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.

move[Bearbeiten]

Verschieben von einer oder mehrerer Dateien von einem Verzeichnis in ein anderes.

oder

ein Verzeichnis umbenennen

move test test_neu

path[Bearbeiten]

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.

rd / rmdir[Bearbeiten]

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

ren oder rename[Bearbeiten]

Datei(en) umbenennen.

start[Bearbeiten]

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 CMD.EXE beim Aufruf übergebene sein und nicht die aktuelle Umgebung.
  • /MIN Startet das Fenster minimiert.
  • /MAX Startet das Fenster maximiert.
  • /SEPARATE Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
  • /SHARED Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
  • /LOW Startet Anwendung in IDLE-Prioritätsklasse.
  • /NORMAL Startet Anwendung in der NORMAL-Prioritätsklasse.
  • /HIGH Startet Anwendung in der HIGH-Prioritätsklasse.
  • /REALTIME Startet Anwendung in der REALTIME-Prioritätsklasse.
  • /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 selbständig STRG+C überprüft, ist STRG+UNTBR die einzige Möglichkeit, um die Anwendung abzubrechen.
  • /? Gibt die Hilfe aus.

Erklärung:

  • Startet ein Programm (als neues eigenes Fenster).

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

Nützliche (System)-Programme: Hier eine Liste der nützlichen (System)-Programme, die man so ausführen kann:

regedit.exe = neuer Registrierungseditor
(regedt32.exe = älterer Registrierungseditor)

explorer.exe = Windows Ordner Explorer
taskmgr.exe = Windows Taskmanager
taskeng.exe = Aufgabenplanungsmodul
calc.exe = Taschenrechner
mshta.exe = Scripthost für HTA (HTML) Scripting
msconfig.exe = Autostart verzeichnis

W/CScript.exe = Beides Bestandteil des Windows Scripthostes für JS und VBS

iexplore.exe = Microsoft Windows Internet Explorer, Standardbrowser für Windows
firefox.exe = Mozilla Firefox, Internetbrowser
dialer.exe = Windows-Hilfeprogramm für DFÜ Einwahlverbindungen
Notepad.exe = Standard-Textbearbeitungsprogramm von Microsoft

cmd.exe = Microsoft Windows Befehlsprozessor für Batch
winword = Microsoft Word

taskkill[Bearbeiten]

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  /im iexplore.exe /t /f

tasklist[Bearbeiten]

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 unter: taskkill). Mit einem hinzugefügten /nh werden die Spaltenüberschriften ausgeblendet.

Der Befehl "tasklist" ist erst ab Windows XP verfügbar.

type[Bearbeiten]

Gibt den (reinen Text-)Inhalt der angegebenen Datei (z. B. *.bat, *.cmd oder *.txt) aus.

Pfad der laufenden Batchdatei[Bearbeiten]

Es gibt Situationen, in denen es interessiert, in welchem Verzeichnispfad die laufende Batchdatei liegt. mit der Variable %~dp0 kann man diesen inklusive Laufwerksbuchstaben ausgeben lassen:

Script (test.bat):

 @echo off
 echo.Dieses Script liegt im Verzeichnispfad %~dp0
 pause