DOS-Befehle

Wer mit DOS ansonsten nichts am Hut hat, aber die Notwendigkeit einsieht, findet hier das Minimum, mit dem man (nach unserer langjährigen Erfahrung) auskommt. 
Achtung: Die Beschreibungen beziehen sich auf die DOS-Version von Windows-XP. Wenn von "Befehlserweiterungen" die Rede ist: die gibt's bei älteren Versionen nicht. 

Wenn Sie nebenbei Dinge ausprobieren wollen: schnell ein `DOS-Fenster` zusätzlich aufmachen! 
In einem `Extra-Menü` können Sie gezielt auf die wichtigsten Verzeichnisse zugreifen: dort eine Datei auswählen oder dort ein DOS-Fenster öffnen. 

Liste der allerwichtigsten DOS-Befehle
Direkt zum Ausprobieren: Auf das Befehlswort klicken, dann geht ein DOS-Fenster auf. 
Diese Befehle muß jeder kennen, sie sind absolut unverzichtbar. 
Achtung: Mit dem Befehl  exit   machen Sie dann immer das DOS-Fenster wieder zu. (exit eintippen und die Enter-Taste drücken!) 

`cd` : Verzeichnis wechseln 

 dir : Liste der Dateien zeigen lassen 
	`selber ausprobieren` 
	`Momentanes Arbeitsverzeichnis zeigen` 

`copy` : Eine Datei kopieren 

`ren` : Den Namen einer Datei ändern 

Liste der wichtigsten DOS-Befehle 
Dies sind diejenigen, mit denen man eigentlich auskommt! 
Es gibt ein paar, die in zwei Formen verwendet werden können, z.B. "ren" und "rename" sind gleichwertig. Nachfolgend ist in diesen Fällen nur die kürzere Form angebeben. 

Es gibt natürlich eine `Vollständige Liste` (Nicht bei Win'95/98). 

In lila und mit * sind diejenigen Befehle angegeben, die nur in `Stapeldateien` (Batch-Dateien) sinnvoll sind. 
Klickt man auf einen Befehl, kommt die vollständige Beschreibung. 

`ATTRIB`   Zeigt Dateiattribute an bzw. ändert sie. 
`CALL`     * Ruft eine Batchdatei aus einer anderen Batchdatei heraus auf. 
`CD`       Zeigt den Namen des aktuellen Verzeichnisses an bzw. wechselt auf ein 
                anderes. 
`CLS`      Löscht den Bildschirminhalt. 
`COPY`     Kopiert eine oder mehrere Dateien an eine andere Stelle. 
`DEL`      Löscht eine oder mehrere Dateien. 
`DIR`      Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf. 
`ECHO`     * Zeigt Meldungen an bzw. schaltet die Befehlsanzeige ein oder aus. 
`EXIT`     Schließt das DOS-Fenster. (Beendet das Programm CMD.EXE) 
`FC`       Vergleicht den Inhalt zweier Dateien und zeigt Unterschiede an. 
`GOTO`     * Setzt den Windows-Befehlsinterpreter auf eine markierte Zeile in 
               einem Batchprogramm. 
`HELP`     Zeigt Hilfetexte zu Befehlen an. 
`IF`       * Prüft Bedingungen und führt, davon abhängend, Befehle aus.
`MD`       Erstellt ein neues Verzeichnis 
`MOVE`     Verschiebt ein oder mehrere Dateien von einem Verzeichnis in 
                ein anderes. Verschiebt auch ganze Verzeichnisse. 
`PAUSE`    * Hält die Ausführung einer Batchdatei an und zeigt eine Meldung an. 
`PRINT`    Druckt eine Textdatei. 
`RD`       Entfernt ein Verzeichnis. (Nur wenn's leer ist) 
`REM`      * Leitet Kommentare in einer Batchdatei bzw. CONFIG.SYS ein. 
`REN`      Benennt eine Datei bzw. Dateien um. 
`SET`      Setzt oder löscht die Umgebungsvariablen bzw. zeigt sie an. 
`TYPE`     Zeigt den Inhalt einer Textdatei an. 

Es folgen die vollständigen Beschreibungen, wie man sie auch per Hand hervorrufen kann. Z.B. gibt man ein  "help attrib", dann kommt die Beschreibung zu attrib. 

Befehl ATTRIB
Zeigt Dateiattribute an oder ändert sie. 

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[Laufwerk:][Pfad][Dateiname] 
       [/S [/D]] 

  +   Setzt ein Attribut. 
  -   Löscht ein Attribut. 
  R   Attribut für 'Schreibgeschützte Datei' 
  A   Attribut für 'Zu archivierende Datei' 
  S   Attribut für 'Systemdatei' 
  H   Attribut für 'Versteckte Datei' 
  [Laufwerk:][Pfad][Dateiname] 
      Gibt Dateien für den Attributprozess an. 
 /S   Verarbeitet übereinstimmende Dateien im aktuellen Ordner 
      und in allen Unterordnern. 
 /D  Verarbeitet auch die Ordner. 

Batch-Befehl CALL
Ruft eine Batchdatei von einer anderen aus auf. 

CALL [Laufwerk:][Pfad]Dateiname [Parameter] 

  Parameter          Bezeichnet beliebige Angaben in der Befehlszeile, die von 
                     dem aufgerufenen Batchprogramm benötigt werden. 

Wenn die Befehlserweiterungen aktiviert sind, wird der CALL-Befehl 
folgendermaßen verändert: 

Der CALL-Befehl akzeptiert jetzt Marken als Sprungziele. 
Die Syntax ist: 

    CALL :Marke Argumente 

Mit den angegebenen Argumenten wird ein neuer Batchkontext erzeugt und 
die Programmausführung hinter der angegebenen Marke fortgesetzt. Um die Batch- 
datei dort tatsächlich zu verlassen, muß man sie zweimal beenden. Beim ersten 
Erreichen des Endes wird das Programm zu dem Befehl hinter dem CALL-Aufruf 
zurückkehren. Beim zweiten Mal wird dann die Batchdatei beendet. Geben Sie 
GOTO /? ein, um weitere Informationen über die Erweiterung von GOTO :EOF zu 
erhalten, die es Ihnen ermöglicht, eine Batchdatei zu verlassen. 

Zusätzlich hat sich die Auflösung von Referenzen auf Argumente in Batchdateien 
(,  etc.) wie folgt geändert: 

    %%* in einer Batchdatei bezieht sich auf alle Argumente (z.B.  
           ...). 

    Die Ersetzung von Batchparametern (%%n) wurde erweitert. Sie können 
    jetzt folgende Syntax benutzen: 

        %%~1         - Expandiert  und entfernt umschließende 
                      Anführungszeichen ("). 
        %%~f1        - Expandiert  zu einem vollständigen Dateinamen. 
        %%~d1        - Erzeugt nur den Laufwerkbuchstaben von . 
        %%~p1        - Erzeugt nur den Pfad von . 
        %%~n1        - Erzeugt nur den Dateinamen von . 
        %%~x1        - Erzeugt nur die Dateierweiterung von . 
        %%~s1        - Der erzeugte Pfad enthält nur kurze Namen. 
        %%~a1        - Expandiert  zu Dateiattributen. 
        %%~t1        - Expandiert  zu Datum/Zeit der Datei. 
        %%~z1        - Expandiert  zur Größe der Datei. 
        %%~$PATH:1   - Durchsucht die in der PATH-Umgebungsvariablen 
                      angegebenen Verzeichnisse und expandiert die erste 
                      gefundene Datei  zu dem vollständigen Dateinamen. 
                      Wenn der Name der Umgebungsvariablen nicht definiert 
                      ist oder diese Datei bei der Suche nicht gefunden 
                      wurde, wird dieser Parameter zu einer leeren 
                      Zeichenkette expandiert. 

    Diese Parameter können auch miteinander kombiniert werden: 

        %%~dp1       - Erzeugt den Laufwerkbuchstaben und Pfad von . 
        %%~nx1       - Erzeugt den Dateinamen und die Dateierweiterung von . 
        %%~dp$PATH:1 - Durchsucht die in der PATH-Umgebungsvariablen ange- 
                       gebenen Verzeichnisse nach  und erzeugt den Lauf- 
                       werkbuchstaben und Pfad der ersten gefundenen Datei. 
        %%~ftza1     - Erzeugt eine DIR-ähnliche Ausgabezeile von . 

    In den angegebenen Beispielen können  und PATH durch andere gültige 
    Werte ersetzt werden. Die Syntax von %%~ wird durch eine gültige Argument- 
    anzahl beendet. %%~ darf nicht mit %%* verwendet werden. 

Befehl CD
Wechselt das Verzeichnis 
Wenn nichts dahinter steht: zeigt den Namen des momentanen Verzeichnisses an. 
(CD bedeutet "Change Directory") 

CD [/D] [Laufwerk:][Pfad] 
CD [..] 

  ..   Gibt an, daß Sie in das übergeordnete Verzeichnis wechseln möchten. 

Geben Sie "CD Laufwerk:" ein, um das aktuelle Verzeichnis auf dem angegebenen Laufwerk anzuzeigen. 

Verwenden Sie die /D-Option, um zusätzlich zum Wechseln des Verzeichnisses auch das aktuelle Laufwerk zu wechseln. 

Der CD-Befehl behandelt Leerzeichen nicht als  Begrenzungszeichen, so daß es möglich ist, in ein Unterverzeichnis zu wechseln, dessen Name Leerzeichen 
enthält, ohne diese mit Anführungszeichen einzuschließen. Beispiel: 

    cd Eigene Dateien 

ist dasselbe wie: 

    cd "Eigene Dateien" 

Nur wenn die Befehlserweiterungen nicht aktiviert sind, müssen die Anführungszeichen angegeben werden. 
Empfehlung: Nie Leerzeichen in eigenen Dateinamen verwenden. 

Befehl CLS
Löscht den Bildschirminhalt. 

CLS    ... sonst nichts 

Befehl COPY
Kopiert eine oder mehrere Dateien an eine andere Position. 

Einfachste Form: 
COPY name1 name2
     Datei name1 wird kopiert, die Kopie heißt name2. 

Vollständige Form mit allen Optionen: 
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] Quelle [/A | /B] 
     [+ Quelle [/A | /B] [+ ...]] [Ziel [/A | /B]] 

  Quelle       Bezeichnet die zu kopierende(n) Datei(en). 
  /A           Weist auf eine ASCII-Textdatei hin. 
  /B           Weist auf eine Binärdatei hin. 
  /D           Zieldatei kann entschlüsselt erstellt werden. 
  Ziel         Bezeichnet das Verzeichnis und/oder Dateinamen 
               der neuen Datei(en). 
  /V           Überprüft, ob die Dateien richtig geschrieben 
               wurden. 
  /N           Verwendet den Kurznamen (falls vorhanden), beim 
               Kopieren 
               einer Datei mit einem Nicht-8Punkt3-Namen. 
  /Y           Unterdrückt die Bestätigungsaufforderung beim  
               Überschreiben vorhandener Zieldateien. 
  /-Y          Fordert beim Überschreiben vorhandener 
               Zieldateien zum Bestätigen auf. 
  /Z           Kopiert Netzwerkdateien in einem Modus, der 
               einen Neustart ermöglicht. 

Die Option /Y ist möglicherweise in der Umgebungsvariablen COPYCMD voreingestellt. Dies wird durch /-Y auf der Befehlszeile überschrieben. 
Standardmäßig wird beim Überschreiben zum Bestätigen aufgefordert, außer wenn der COPY-Befehl innerhalb einer Batchdatei ausgeführt wird. 

Um Dateien aneinander zu hängen, geben Sie eine einzelne Datei als Ziel an, aber mehrere Dateien als Quelle (unter Verwendung von Platzhaltern oder in der Form: Datei1 + Datei2 + ...). 

Befehl DEL
Löscht eine oder mehrere Dateien. 

DEL [/P] [/F] [/S] [/Q] [/A[[:]Attribute]] Namen 

  Namen         Gibt eine Liste von Dateien oder Verzeichnissen an. 
                Platzhalter können verwendet werden, um mehrere Dateien zu 
                löschen. Wird ein Verzeichnis angegeben, werden alle Dateien in 
                diesem Verzeichnis gelöscht. 
  /P            Fordert Sie vor dem Löschen jeder Datei zur Bestätigung auf. 
  /F            Erzwingt das Löschen schreibgeschützter Dateien. 
  /S            Löscht alle Dateien in allen Unterverzeichnissen. 
  /Q            Keine Rückfrage bei Benutzung globaler Platzhalter. 
  /A            Wählt die zu löschenden Dateien nach dem Attribut aus. 
  Attribute     R  Schreibgeschützte Dateien     S  Systemdateien 
                H  Versteckte Dateien            A  Zu archivierende Dateien 
                -  vorangestellt dreht die Bedeutung um. 

Wenn die Befehlserweiterungen aktiviert sind, wird DEL 
folgendermaßen verändert: 

Die Anzeigesemantik für die /S-Option ist umgekehrt, so daß nur Dateien 
angezeigt werden, die gelöscht wurden und nicht solche, die nicht 
gefunden wurden. 

Befehl DIR
Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf. 

DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N] [/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4] 

  [Laufwerk:][Pfad][Dateiname] 
             Bezeichnet Laufwerk, Verzeichnis und/oder Dateien. 

  /A         Listet Dateien mit angegebenen Attributen auf. 
  Attribute   D Verzeichnisse        R Schreibgeschützte Dateien 
              H Versteckte Dateien   A Zu archivierende Dateien 
              S Systemdateien        - vorangestellt kehrt Bedeutung um 
  /B         Einfaches Format (keine Kopfdaten, keine Zusammenfassung). 
  /C         Zeigt das Tausendertrennzeichen bei Dateigrößen an 
             (Standardeinstellung). Verwenden Sie /-C, um das 
             Tausendertrennzeichen nicht anzuzeigen. 
  /D         Gleich wie Breitformat, jedoch nach Spalten sortiert. 
  /L         Verwendet Kleinschreibung. 
  /N         Neues, langes Listenformat (Dateinamen auf rechter Seite). 
  /O         Gibt die Liste sortiert aus. 
  Folge       N Name (alphabetisch)        S Größe (kleinere zuerst) 
              E Erweiterung (alphabetisch) D Datum/Zeit (ältere zuerst) 
              G Verzeichnisse zuerst       - vorangestellt kehrt die 
                                             Reihenfolge um 
  /P         Pausiert nach jeder vollen Bildschirmseite. 
  /Q         Gibt den Besitzer der Datei aus. 
  /S         Listet Dateien und alle Unterverzeichnisse auf. 
  /T         Bestimmt welche Zeit verwendet wird (nur für NTFS). 
  Zeit        C  Erstellung 
              A  Letzter Zugriff 
              W  Letzter Schreibzugriff 
  /W         Verwendet Breitformat für die Auflistung. 
  /X         Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an. 
             Das Format ist das gleiche wie bei /N, wobei der Kurzname 
             vor dem Langnamen eingefügt wird. Wenn kein Kurzname 
             vorhanden ist, werden Leerzeichen angezeigt. 
  /4         Zeigt das Jahr vierstellig an. 

Optionen können in der Umgebungsvariablen DIRCMD voreingestellt werden. 
"-" vor einer Option setzt die Voreinstellung außer Kraft, z.B. DIR /-W. 
Empfehlung: geben Sie   set dircmd=/od 
dann werden die Dateien chronologisch angezeigt, die neuesten ganz unten. Das ist das nützlichste. 
Sonderform: geben Sie   dir *.   (möglich auch:  dir ... ) 
also ohne Dateinamenserweiterung, dann werden die Dateien ohne Namenserweiterung gezeigt. Dazu gehören z.B. die UIF-Dateien. 

Batch-Befehl ECHO
Zeigt Meldungen an oder schaltet die Befehlsanzeige ein (ON) oder aus (OFF). 

  ECHO [ON | OFF] 
  ECHO [Meldung] 

ECHO ohne Parameter zeigt die aktuelle Einstellung der Befehlsanzeige an. 
Empfehlung: Als erste Zeile einer Batchdatei immer   ECHO OFF 
Dann werden die Befehle als solche beim Ablauf nicht gezeigt. 

Befehl EXIT
Beendet den Befehlsinterpreter CMD.EXE (d.h. schließt das DOS-Fenster) 
oder beendet die aktuelle Batchdatei. 

EXIT [/B] [exitCode] 

  /B          Beendet das aktuelle Batchprogramm anstatt CMD.EXE. 
              Wenn diese Option außerhalb eines Batchprogramms aufgerufen 
              wird, wird CMD.EXE beendet. 

  ExitCode    Gibt die Zahl an, die an ERRORLEVEL übergeben wird, wenn die 
              Option /B angegeben wurde. Wenn CMD.EXE beendet wird, wird diese 
              Zahl als "Process Exit Code" übergeben. 

Befehl FC
Vergleicht zwei Dateien oder Dateigruppen und zeigt die Unterschiede 
zwischen diesen an. 

FC [/A] [/C] [/L] [/LBn] [/N] [/T] [/W] [/nnnn] [Laufwerk1:][Pfad1]Dateiname1 
  [Laufwerk2:][Pfad2]Dateiname2 
FC /B [Laufwerk1:][Pfad1]Dateiname1 [Laufwerk2:][Pfad2]Dateiname2 

  /A     Zeigt nur die erste und letzte Zeile von mehreren Abweichungen 
         in Folge an. 
  /B     Führt einen binären Vergleich durch. 
  /C     Vergleicht ohne Rücksicht auf Groß-/Kleinschreibung. 
  /L     Vergleicht Dateien als ASCII-Text. 
  /LBn   Stellt die maximale Anzahl von unterschiedlichen Zeilen durch 
         die angegebene Anzahl n ein. 
  /N     Zeigt bei einem ASCII-Vergleich die Zeilennummer an. 
  /T     Wandelt Tabulatoren nicht in Leerzeichen um. 
  /W     Komprimiert Tabulatoren und Leerzeichen für den Vergleich. 
  /nnnn  Stellt die Anzahl der Zeilen, die nach einem Unterschied 
         übereinstimmen müssen, auf nnn ein. 

Befehl FOR
Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus.

FOR %Variable IN (Satz) DO Befehl [Parameter]

  %Variable  Ein ersetzbarer Parameter bestehend aus einem einzelnen
              Buchstaben.
  (Satz)      Ein Satz von mindestens einer Datei. Platzhalter sind zulässig.
  Befehl      Befehl, der für jede Datei ausgeführt werden soll.
  Parameter   Parameter und Optionen für den angegebenen Befehl.

Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablen-
namen, %i und %I sind nicht identisch.

Wenn die Befehlserweiterungen aktiviert sind, werden folgende
Ergänzungen für den FOR-Befehl unterstützt:

FOR /D %Variable IN (Satz) DO Befehl [Parameter]

    Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
    auf Verzeichnisse und nicht auf Dateien.

FOR /R [[Laufwerk:]Pfad] %Variable IN (Satz) DO Befehl [Parameter]

    Der FOR-Befehl wird ausgehend vom Verzeichnis [Laufwerk:]Pfad (als
    Stammverzeichnis) für jedes darunterliegende Verzeichnis ausgeführt.
    Wenn kein Verzeichnis nach der /R-Option angegeben ist, wird das aktuelle
    Verzeichnis verwendet. Wenn der Satz nur einen einzelnen Punkt als
    Zeichen (.) enthält, wird nur die Verzeichnisstruktur aufgelistet.

FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]

    Der Satz ist eine Folge von Zahlen von Start bis Ende und der
    angegebenen Schrittweite. So erzeugt (1,1,5) die Folge 1 2 3 4 5 und
    (5,-1,1) erzeugt die Folge (5 4 3 2 1).

FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN ("Zeichenkette") DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN (Befehl) DO Befehl [Parameter]

    oder, unter Verwendung der Option "usebackq":

FOR /F ["Optionen"] %variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN ('Zeichenkette') DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter]

    Der Dateiensatz besteht aus einem oder mehreren Dateinamen. Jede Datei
    wird geöffnet, gelesen und bearbeitet, dann wird mit der nächsten Datei
    des Satzes fortgefahren. Die Bearbeitung einer Datei erfolgt zeilenweise,
    jede einzelne Textzeile wird ausgewertet und in die entsprechenden Token
    (keinen oder mehrere) zerlegt. Die Befehle in der FOR-Schleife werden dann
    mit den Variablenwerten (d.h. den gefunden Zeichenketten bzw. Token)
    aufgerufen. Standardmäßig liefert /F den ersten, durch ein Leerzeichen
    getrennten Token von jeder Zeile in jeder Datei. Leerzeilen werden
    übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise
    durch den Parameter "Optionen" überschrieben werden. Das ist eine
    Zeichenkette in Anführungszeichen, welche eines oder mehrere Schlüssel-
    wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese
    Schlüsselwörter sind:

        eol=c           - Gibt das Zeichen für Zeilenendekommentare an
                          (nur eins).
        skip=n          - Gibt die Anzahl der Zeilen an, die am Anfang einer
                          Datei übersprungen werden.
        delims=xxx      - Gibt einen Satz von Trennzeichen an. Diese ersetzen
                          die Standardtrennzeichen TAB und Leerzeichen.
        tokens=x,y,m-n  - Gibt an, welche Token von jeder Zeile an die
                          FOR-Schleife weitergegeben werden.
                          Das führt dazu, dass zusätzliche Variablen erzeugt
                          werden. Mit der Form m-n wird dabei ein Bereich vom
                          m-ten bis zum  n-ten Token angegeben. Wenn das letzte
                          Zeichen ein Sternchen ist, wird eine zusätzliche
                          Variable deklariert, die den verbleibenden Text
                          dieser Zeile enthält.
        usebackq        - Gibt an, dass die neue Semantik in Kraft ist,
                          wobei eine Zeichenkette in umgekehrten Anführungs-
                          zeichen als Befehl ausgeführt wird und eine
                          Zeichenkette in Anführungszeichen ein literaler
                          Befehl ist, der die Verwendung von doppelten
                          Anführungszeichen um Dateinamen in Dateinamens-
                          sätzen erlaubt.

    Einige Beispiele:

FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k

    Dadurch wird jede Zeile in der Datei Datei.txt ausgewertet, Zeilen die
    mit einem Semikolon beginnen werden ignoriert, für den 2. und 3. Token
    jeder Zeile werden die Befehle in der FOR-Schleife ausgeführt. Trenn-
    zeichen sind Kommas und/oder Leerzeichen. In der FOR-Schleife wird der
    Ausdruck %i verwendet, um den 2. Token zu erhalten, %j für den 3. Token
    und %k, um alle übrigen Token zu erhalten. Dateinamen, die Leerzeichen
    enthalten, müssen Sie innerhalb doppelter Anführungszeichen angeben. Dazu
    müssen Sie die Option "usebackq" verwenden. Andernfalls werden doppelte  
    Anführungszeichen zur Definition eines auszuwertenden Literals
    verwendet.
 
    Dabei ist %i explizit deklariert, während %j und %k implizit durch die
    Option "tokens=" deklariert werden. Sie können bis zu 26 Token durch diese
    Option angeben, vorausgesetzt, es wird dadurch nicht versucht, eine
    Variable mit einem Buchstaben größer als 'z' zu deklarieren. Bedachten
    Sie, dass FOR-Variablen aus nur einem Buchstaben bestehen, Groß-/Klein-
    schreibung beachtet werden muss, dass sie global sind und nicht mehr als
    insgesamt 52 gleichzeitig aktiv sein dürfen.

    Sie können den Befehl FOR /F auch direkt mit einer Zeichenkette verwenden,
    indem Sie die Zeichenkette in doppelten Anführungszeichen als Dateiensatz
    zwischen den Klammern angeben. Diese Zeichenkette wird dabei als
    einzelne Zeile einer Datei betrachtet und ausgewertet.

    Schließlich können Sie den Befehl FOR /F auch verwenden, um die Ausgabe
    eines Befehls auszuwerten. Dazu geben Sie eine Zeichenkette in einfachen
    Anführungszeichen als Dateiensatz zwischen den Klammern an. Diese
    Zeichenkette wird dabei als Befehlszeile betrachtet und von einer unter-
    geordneten CMD.EXE ausgeführt. Die Ausgabe dieses Befehls wird dann wie
    eine normale Datei ausgewertet. Das folgende Beispiel listet die Um-
    gebungsvariablen im aktuellen Verzeichnis auf:

        FOR /F " usebackq delims==" %i IN ((`set`) DO @echo %i

Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

    %~I         - Expandiert %I und entfernt alle umschließenden 
                  Anführungszeichen (").
    %~fI        - Expandiert %I zu einem vollständigen Dateinamen.
    %~dI        - Erzeugt nur den Laufwerkbuchstaben von %I.
    %~pI        - Erzeugt nur den Pfad von %I.
    %~nI        - Erzeugt nur den Dateinamen von %I.
    %~xI        - Erzeugt nur die Dateierweiterung von %I.
    %~sI        - Erzeugter Pfad enthält nur kurze Dateinamen.
    %~aI        - Erzeugt die Dateiattribute von %I.
    %~tI        - Erzeugt Datum und Zeit von %I.
    %~zI        - Erzeugt die Dateigröße von %I.
    %~$PATH:I   - Durchsucht die in der PATH-Umgebungsvariablen
                  angegebenen Verzeichnisse und expandiert die erste
                  gefundene Datei %I zu dem vollständigen Dateinamen.
                  Wenn der Name der Umgebungsvariablen nicht definiert
                  ist oder diese Datei bei der Suche nicht gefunden wurde,
                  wird dieser Parameter zu einer leeren Zeichenkette
                  expandiert.

Diese Parameter können auch miteinander kombiniert werden:

    %~dpI       - Erzeugt den Laufwerkbuchstaben und Pfad von %I.
    %~nxI       - Erzeugt den Dateinamen und die Dateierweiterung von %I.
    %~fsI       - Expandiert %I zu einem vollständigen Namen, der nur
                  kurze Dateinamen enthält.
    %~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
                  angegebenen Verzeichnisse nach %I und erzeugt den
                  Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
    %~ftzaI     - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
                  Befehls entspricht.

In den angegebenen Beispielen können %I und PATH durch andere gültige
Werte ersetzt werden. Der Ausdruck %~ wird durch einen gültigen Variablen-
namen für FOR abgeschlossen. Die Verwendung von Großbuchstaben für die Namen
von Variablen, wie z.B. %I, macht diese Ausdrücke leichter lesbar und

Batch-Befehl GOTO
Setzt die Ausführung eines Batchprogramms an einer Marke fort. 

GOTO Marke 

  Marke   Eine Zeichenfolge als Marke in einem Batchprogramm. 

Marken stehen allein am Zeilenanfang mit einem vorangestellten Doppelpunkt, d.h. es muß eine Zeile geben, in der nur steht: 
:Marke 

Wenn die Befehlserweiterungen aktiviert sind, wird der GOTO-Befehl 
folgendermaßen verändert: 

Der GOTO-Befehl unterstützt jetzt die Marke :EOF. Dadurch wird die Bearbeitung 
am Ende der aktuellen Batchdatei fortgesetzt. Das ist eine einfache 
Möglichkeit, eine Batchdatei zu beenden, ohne ein Sprungziel zu definieren. 
Siehe auch Befehl CALL. 

Befehl HELP
Zeigt Hilfeinformationen zu Windows XP-Befehlen an. 

HELP [Befehl] 

    z.B.   help dir - Zeigt Hilfetext zum Befehl dir an. 

Batch-Befehl IF
Verarbeitet Ausdrücke in einer Batchdatei abhängig von Bedingungen. 

IF [NOT] ERRORLEVEL Nummer Befehl 
IF [NOT] Zeichenfolge1==Zeichenfolge2 Befehl 
IF [NOT] EXIST Dateiname Befehl 

  NOT               Befehl wird nur dann ausgeführt, wenn die Bedingung nicht 
                    erfüllt ist. 

  ERRORLEVEL Nummer Bedingung ist erfüllt, wenn das zuletzt ausgeführte 
                    Programm einen Code größer oder gleich der Nummer 
                    zurückgibt. 

  Zeichenfolge1==Zeichenfolge2 
                    Bedingung ist erfüllt, falls die Zeichenfolgen gleich sind. 

  EXIST Dateiname   Bedingung ist erfüllt, wenn die angegebene Datei existiert. 

  Befehl            Gibt den Befehl an, der bei erfüllter Bedingung ausgeführt 
                    werden soll. Diesem Befehl kann das Schlüsselwort ELSE 
                    folgen. Der Befehl nach dem Wort ELSE wird ausgeführt, wenn 
                    die angegebene Bedingung nicht erfüllt ist (FALSE). 

Die ELSE-Klausel muß auf der Zeile mit dem Befehl nach dem IF stehen. 
Zum Beispiel: 

    IF EXIST test.txt ( 
        del test.txt 
    ) ELSE ( 
        echo test.txt fehlt 
    ) 

Die beiden folgenden Beispiele funktionieren nicht. Im ersten Fall wird der 
DEL-Befehl nicht durch ein Zeilenende abgeschlossen: 

    IF EXIST test.txt del test.txt ELSE echo test.txt fehlt 

In zweiten Fall befindet sich der ELSE-Befehl nicht auf derselben Zeile mit 
dem IF Schlüsselwort: 

    IF EXIST test.txt del test.txt 
    ELSE echo test.txt fehlt 

Hier ein Beispiel, wie alles auf einer Zeile angegeben werden kann: 

    IF EXIST test.txt (del test.txt) ELSE echo test.txt fehlt 

Wenn die Befehlserweiterungen aktiviert sind, wird der IF-Befehl folgendermaßen 
verändert: 

    IF [/I] Zeichenfolge1 Vergleichsoperator Zeichenfolge2 Befehl 
    IF CMDEXTVERSION Zahl Befehl 
    IF DEFINED Variable Befehl 

Dabei kann der Vergleichsoperator einer der folgenden sein: 

    EQU - gleich 
    NEQ - nicht gleich 
    LSS - kleiner als 
    LEQ - kleiner als oder gleich 
    GTR - größer als 
    GEQ - größer als oder gleich 

Die /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zu 
ignorieren. Die /I-Option kann auch in der Form Zeichenfolge1==Zeichenfolge2 
verwendet werden. Diese Vergleiche sind allgemein, das heißt, wenn beide 
Zeichenfolgen nur aus Ziffern bestehen, werden die Zeichenfolgen in Zahlen 
umgewandelt, und es wird ein nummerischer Vergleich durchgeführt. 

Die Bedingung CMDEXTVERSION arbeitet genau wie ERRORLEVEL, nur daß 
dabei mit einer internen Versionsnummer der Befehlserweiterungen verglichen 
wird. Die erste Versionsnummer ist 1. Diese wird um eins erhöht werden, wenn 
bedeutende Verbesserungen an den Befehlserweiterungen gemacht werden. 
Die Bedingung CMDEXTVERSION ist falsch, wenn die Befehlserweiterungen nicht 
aktiviert sind. 

Die Bedingung DEFINED arbeitet genau wie EXIST, bezieht sich aber auf 
den Namen einer Umgebungsvariablen und ist wahr, wenn die Umgebungs- 
variable definiert ist. 

Der Ausdruck %%ERRORLEVEL%% wird zu einer Zeichendarstellung des aktuellen 
Werts der Variablen ERRORLEVEL expandiert (vorausgesetzt, es gibt nicht bereits 
eine Umgebungsvariable mit dem Namen ERRORLEVEL, deren Wert man dann erhält). 
Nachdem ein Programm ausgeführt wurde, sieht die Verwendung von ERRORLEVEL 
wie folgt aus: 

    goto Antwort%%ERRORLEVEL%% 
    :Antwort0 
    echo J für Ja eingegeben 
    :Antwort1 
    echo N für Nein eingegeben 

oder unter Verwendung der Vergleichsoperatoren: 

    IF %%ERRORLEVEL%% LEQ 1 goto ok 

Der Ausdruck %%CMDCMDLINE%% wird zu der originalen Befehlszeile expandiert, 
die CMD.EXE vor irgendeiner Bearbeitung übergeben wird (vorausgesetzt, es gibt 
nicht bereits eine Umgebungsvariable mit dem Namen CMDCMDLINE, deren Wert man 
dann erhält). 

Der Ausdruck %%CMDEXTVERSION%% wird zu einer Zeichendarstellung des aktuellen 
Werts der Variablen CMDEXTVERSION expandiert (vorausgesetzt, es gibt nicht 
bereits eine Umgebungsvariable mit dem Namen CMDEXTVERSION, deren Wert man 
dann erhält). 

Befehl MD
Erzeugt ein neues Verzeichnis. 

MD    [Laufwerk:]Pfad 

Wenn die Befehlserweiterungen aktiviert sind, wird MD folgendermaßen 
verändert: 

MD erzeugt, wenn nötig, jedes Zwischenverzeichnis. Wenn zum 
Beispiel das Verzeichnis \a nicht existiert, dann entspricht 

    md \a\b\c\d 

der folgenden Befehlsfolge: 

    md \a 
    cd \a 
    md b 
    cd b 
    md c 
    cd c 
    md d 

Diese Folge von Befehlen muß angegeben werden, wenn die Befehlserweiterungen 
nicht aktiviert sind. 

Befehl MOVE
Verschiebt Dateien und Verzeichnisse und benennt Dateien und Verzeichnisse um. 

Um eine oder mehrere Dateien zu verschieben: 
MOVE [/Y| /-Y] [Laufwerk:][Pfad]Datei1[,...] Ziel 

Um ein Verzeichnis umzubenennen: 
MOVE [/Y| /-Y] [Laufwerk:][Pfad]Verz1 Verz2 

  [Laufwerk:][Pfad]Datei1  Bezeichnet den Pfad und den Namen der zu 
                           verschiebenden Datei(en). 
  Ziel                     Bezeichnet den Zielort für die Datei. Das Ziel 
                           kann ein Laufwerkbuchstabe mit Doppelpunkt, ein 
                           Verzeichnisname oder eine Kombination beider sein. 
                           Wenn Sie nur eine einzelne Datei verschieben, 
                           können Sie auch einen Dateinamen angeben, um die 
                           Datei beim Verschieben umzubenennen. 
  [Laufwerk:][Pfad]Verz1   Bezeichnet das umzubenennende Verzeichnis. 
  Verz2                    Bezeichnet den neuen Namen des Verzeichnisses. 
  /Y                       Unterdrückt die Bestätigungsaufforderung zum 
                           Überschreiben bestehender Zieldateien. 
  /-Y                      Fordert vor dem Überschreiben bestehender 
                           Zieldateien zur Bestätigung auf. 
Die Option /Y ist in der COPYCMD-Umgebungsvariablen eventuell voreingestellt. 
Dies kann durch die Option /-Y außer Kraft gesetzt werden. Standardmäßig 
müssen Sie das Überschreiben von Dateien bestätigen, es sei denn der MOVE- 
Befehl wird von einem Batchprogramm aus aufgerufen. 

Batch-Befehl PAUSE
Hält die Ausführung einer Batchdatei an und zeigt folgende Meldung an: 
   Drücken Sie eine beliebige Taste . . . 

Befehl PRINT
Druckt eine Textdatei. 

PRINT [/D:Gerät] [[Laufwerk:][Pfad]Dateiname[...]] 

  /D:Gerät  Gerät, auf dem gedruckt werden soll 

Befehl RD
Entfernt (löscht) ein Verzeichnis. 

RD [/S] [/Q] [Laufwerk:]Pfad 

    /S  Löscht alle Verzeichnisse und Dateien im angegebenen Verzeichnis 
        zusätzlich zu dem Verzeichnis selbst. Wird verwendet, um ganze 
        Verzeichnisbäume zu löschen. 

    /Q  Keine Nachfrage, ob die Verzeichnisbäume mit /S entfernt werden 
        sollen. 

Batch-Befehl REM
Leitet Kommentare in einer Batchdatei oder in CONFIG.SYS ein. 

REM [Kommentar] 

Befehl REN
Benennt eine Datei um. Oder auch mehrere. 

Einfachste Form: 
REN name1 name2
     Datei name1 bekommt den neuen Namen name2. 

REN [Laufwerk:][Pfad]Dateiname1 Dateiname2 

Sie können kein neues Laufwerk und keinen anderen Pfad für die Zieldatei angeben. Dafür gibt es MOVE! Die Datei bleibt also bei REN auf demselben Verzeichnis.  

Befehl SET
Setzt oder löscht Umgebungsvariablen für CMD.EXE, oder zeigt sie an. 

SET [Variable=[Zeichenfolge]] 

  Variable      Bezeichnet den Namen der Umgebungsvariablen. 
  Zeichenfolge  Eine Zeichenfolge, die der Variable zugewiesen werden soll. 

Der Befehl SET ohne Parameter zeigt die aktuellen Umgebungsvariablen an. 

Wenn die Befehlserweiterungen aktiviert sind, wird SET folgendermaßen 
verändert: 

Wenn der SET-Befehl mit nur einem Variablennamen aufgerufen wird, d.h. 
ohne Gleichheitszeichen oder einem anderen Wert, wird der Inhalt aller 
Variablen angezeigt, deren Namen mit eben diesem Buchstaben beginnen. So 
werden durch 

    SET P 

alle Variablen angezeigt, die mit dem Buchstaben 'P' beginnen. 

Der SET-Befehl legt den ERRORLEVEL mit 1 fest, wenn der Variablenname nicht 
in der aktuellen Umgebung gefunden wird. 

Der SET-Befehl erlaubt kein Gleichheitszeichen als Bestandteil eines 
Variablennamens. 

Dem SET-Befehl wurden zwei neue Optionen hinzugefügt: 

    SET /A Ausdruck 
    SET /P Variable=[EingabeaufforderungZeichenfolge] 

Die /A-Option gibt an, daß die Zeichenfolge rechts vom Gleichheitszeichen 
ein numerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogramm 
des Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrer 
Anordnung mit abnehmendem Vorrang: 

    ()                  - Gruppierung 
    ! ~ -               - monäre Operatoren 
    * / %%               - arithmetische Operatoren 
    + -                 - arithmetische Operatoren 
    << >>               - logische Verschiebung 
    &                   - bitweise UND 
    ^                   - bitweise exklusives ODER 
    |                   - bitweise ODER 
    = *= /= 
    &= ^= |= <<= >>= 
    ,                   - Trennzeichen für Ausdrücke 

Wenn Sie einen der arithmetischen oder Moduloperatoren verwenden, müssen 
Sie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen. Alle 
nicht-numerischen Zeichenfolgen im Ausdruck werden als Zeichenfolgen von 
Umgebungsvariablen behandelt, deren Werte vor der Verwendung in Zahlen 
konvertiert werden. Wenn eine Umgebungsvariable angegeben wird, die nicht 
definiert ist, wird für diese der Wert Null verwendet. Somit können Sie 
mit Umgebungsvariablen Berechnungen vornehmen, ohne %%-Zeichen einzugeben, 
um deren Werte zu erhalten. Wenn der Befehl SET /A von der Befehlszeile, 
d.h. außerhalb eines Befehlsskripts ausgeführt wird, dann zeigt er 
den endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erfordert 
eine Umgebungsvariable auf der linken Seite des Operators. Numerische Werte 
stellen immer Dezimalzahlen dar, es sei denn, sie haben ein Präfix 0x für 
hexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktale Zahlen. Damit 
stellt 0x12 dieselbe Zahl wie 18 oder 022 dar. Beachten Sie, daß die oktale 
Schreibweise verwirrend sein kann: So sind 08 und 09 keine gültigen Zahlen, 
da 8 und 9 keine erlaubten oktalen Ziffern sind. 

Die Option /P ermöglicht es, einer Variablen eine Eingabezeile des Benutzers 
zuzuweisen und zeigt die angegebene Eingabeaufforderung an, bevor die 
Eingabezeile gelesen wird. Die Eingabeaufforderung kann leer sein. 

Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert: 

    %%PATH:str1=str2%% 

Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im 
erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere 
Zeichenfolge sein, um alle Instanzen von "str1" aus der erweiterten Ausgabe zu 
löschen. Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles 
zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des 
übrigen Abschnitts von "str1". 

    %%PATH:~10,5%% 

Dies erweitert die PATH-Umgebungsvariable und verwendet dann nur fünf 
Zeichen ab dem elften Zeichen (Offset=10) des erweiterten Ergebnisses. Wenn die 
Länge nicht angegeben ist, wird der Rest des Variablenwerts verwendet. 
Wenn eine der Zahlen (Offset oder Länge) negativ ist, dann wird der angegebene 
Wert der Länge des Umgebungsvariablenwerts hinzugefügt. 

    %%PATH:~-10%% 

extrahiert die letzten 10 Zeichen der Variable PATH. 

    %%PATH:~0,-2%% 

extrahiert alle, außer den letzten 2, Zeichen der Variable PATH. 

Die Unterstützung der verzögerten Erweiterung von Umgebungsvariablen wurde 
hinzugefügt. Standardmäßig ist sie deaktiviert. Sie kann mit der 
Befehlszeilenoption /V von CMD.EXE aktiviert/deaktiviert werden. 
Siehe CMD /? 

Die verzögerte Erweiterung von Variablen verbessert die Möglichkeiten der 
Variablenerweiterung. Bisher wurden die Variablen beim Lesen des Texts, und 
nicht bei dessen Ausführung, erweitert. Das folgende Beispiel zeigt ein 
Problem, das dabei auftritt: 

    set VAR=vorher 
    if "%%VAR%%" == "vorher" ( 
        set VAR=nachher; 
        if "%%VAR%%" == "nachher" @echo Es funktioniert! 
    ) 

Die Meldung würde nie angezeigt, weil %%VAR%% in beiden IF-Befehlen 
beim Lesen des ersten IF-Befehls erweitert wird, weil es logisch zu diesem 
gehört. Daher vergleicht der zweite IF-Befehl "vorher" mit "nachher" was nie 
gleich sein kann. Auch das folgende Beispiel funktioniert nicht wie erwartet: 

    set LISTE= 
    for %%i in (*) do set LISTE=%%LISTE%% %%i 
    echo %%LISTE%% 

Es wird KEINE Liste der Dateien im aktuellen Verzeichnis erstellt, stattdessen 
erhält LISTE den Namen der letzten Datei als Wert. Dies ist der Fall, weil 
%%LISTE%% nur einmal beim Lesen des IF-Befehls erweitert wird. Zu diesem 
Zeitpunkt ist LISTE leer. 
Die FOR-Schleife, die tatsächlich ausgeführt wird, lautet: 

    for %%i in (*) do set LISTE= %%i 

Hiermit wird der Variablen LISTE immer wieder der letzte Dateiname 
zugewiesen. 

Die verzögerte Erweiterung von Umgebungsvariablen erlaubt es, eine 
Umgebungsvariable, unter Verwendung eines weiteren Zeichens (dem 
Ausrufezeichen), zur Laufzeit zu erweitern. Mit aktivierter verzögerter 
Erweiterung von Umgebungsvariablen können obige Beispiele wie folgt geschrieben 
werden: 

    set VAR=vorher 
    if "%%VAR%%" == "vorher" ( 
        set VAR=nachher 
        if "!VAR!" == "nachher" @echo Es funktioniert! 
    ) 

    set LISTE= 
    for %%i in (*) do set LISTE=!LISTE! %%i 
    echo %%LISTE%% 

Wenn die Befehlserweiterungen aktiviert sind, gibt es mehrere dynamische 
Umgebungsvariablen, die zwar erweiterungsfähig sind, aber nicht in der Liste 
von Variablen auftauchen, die mit SET angezeigt werden. Diese Variablenwerte 
werden bei jeder Werterweiterung der Variable dynamisch berechnet. Falls eine 
Variable mit einem dieser Namen definiert wird, dann überschreibt diese 
Definition die unten stehende dynamische Definition: 

%%CD%% - expandiert zum aktuellen Verzeichnisnamen. 

%%DATE%% - expandiert zum aktuellen Datum unter Verwendung desselben Formats 
    wie der DATE-Befehl. 

%%TIME%% - expandiert zur aktuellen Zeit unter Verwendung desselben Formats 
    wie der TIME-Befehl. 

%%RANDOM%% - expandiert zu einer zufällig gewählten Dezimalzahl 
    zwischen 0 und 32767. 

%%ERRORLEVEL%% - expandiert zum aktuellen ERRORLEVEL-Wert. 

%%CMDEXTVERSION%% - expandiert zur Versionsnummer der aktuellen Erweiterungen 
    für den Befehlsinterpreter. 

%%CMDCMDLINE%% - expandiert zur ursprünglichen Befehlszeile, die den 
    Befehlsinterpreter aufgerufen hat. 

Befehl TYPE
Zeigt den Inhalt einer oder mehrerer Textdateien an. 

TYPE [Laufwerk:][Pfad]Dateiname 

?cd=x var 'c'`ins #udC`exec dos-cmd 
?selber ausprobieren=x var 'd'`ins #udC`exec dos-cmd 
?copy=x var 'k'`ins #udC`exec dos-cmd 
?ren=x var 'r'`ins #udC`exec dos-cmd 
?Momentanes Arbeitsverzeichnis zeigen=x dos dir /o-d >dlist`h dlist`del dlist 
?CD=h =Befehl CD 
?COPY=h =Befehl COPY 
?DIR=h =Befehl DIR 
?REN=h =Befehl REN 
?ATTRIB=h =Befehl ATTRIB 
?CD=h =Befehl CD 
?CLS=h =Befehl CLS 
?FC=h =Befehl FC 
?COPY=h =Befehl COPY 
?DEL=h =Befehl DEL 
?DIR=h =Befehl DIR 
?ECHO=h =Befehl ECHO 
?EXIT=h =Befehl EXIT 
?GOTO=h =Befehl GOTO 
?HELP=h =Befehl HELP 
?IF=h =Befehl IF  
?MD=h =Befehl MD 
?MOVE=h =Befehl MOVE 
?PAUSE=h =Befehl PAUSE 
?PRINT=h =Befehl PRINT 
?RD=h =Befehl RD 
?REM=h =Befehl REM 
?SET=h =Befehl SET 
?TYPE=h =Befehl TYPE 
?CALL=h =Befehl CALL 
?Vollständige Liste=x dos echo - >dostxt.txt`dos help >>dostxt.txt`h dostxt.txt
?DOS-Fenster=x get env comspec`ins #uwC`var #uwC " /k dosdemo.bat"`Call 
?Stapeldateien=h dos-bat 
?Extra-Menü=X dos