Interne Befehle der CMD-Shell

----------------------------------------------------------------------------- 

F7      Zeigt die Befehlshistorie an.
   
----------------------------------------------------------------------------- 
CMD 
----------------------------------------------------------------------------- 
   
Startet eine neue Instanz des Windows NT-Befehlsinterpreters.

CMD [/X | /Y] [/A | /U] [/Q] [[/C | /K] Zeichenfolge]

/C      Führt den Befehl in der Zeichenfolge aus und endet dann.
/K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
/Q      Schaltet die Befehlsanzeige aus.
/A      Ausgabe interner Befehle in eine Pipe oder Datei im ANSI-Format.
/U      Ausgabe interner Befehle in eine Pipe oder Datei im UNICODE-Format.
/T:fg   Legt die Hinter-/Vordergrundfarben fest (siehe auch COLOR /?)
/X      Aktiviert die Erweiterungen für die Windows NT-Version der Datei
        CMD.EXE.
/Y      Deaktiviert die Erweiterungen für die Windows NT-Version der
        Datei CMD.EXE.

Beachten Sie, daß Befehlsfolgen getrennt durch das Trennzeichen '&&'
nur akzeptiert werden, wenn sie zwischen Anführungszeichen stehen.
Befehlserweiterungen sind standardmäßig aktiviert. Sie können auch die
Erweiterungen für alle Aufrufe des Befehlsprozessors deaktivieren,
indem Sie den folgenden Wert in der Registrierung auf Null setzen:

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

Folgende Befehle wurden durch die Befehlserweiterungen geändert bzw.
hinzugefügt:

    DEL oder ERASE
    COLOR
    CD oder CHDIR
    MD oder MKDIR
    PROMPT
    PUSHD
    POPD
    SET
    SETLOCAL
    ENDLOCAL
    IF
    FOR
    CALL
    SHIFT
    GOTO
    START (umfaßt auch Änderungen an externen Befehlsaufrufen)
    ASSOC
    FTYPE

Sie erhalten weitere Details, indem Sie HELP und den Befehlsnamen eingeben.
   
----------------------------------------------------------------------------- 
DEL 
----------------------------------------------------------------------------- 
   
Löscht eine oder mehrere Dateien.

DEL [/P] [/F] [/S] [/Q] [/A[[:]Attribute]] [[Laufwerk:][Pfad]Dateiname
ERASE [/P] [/F] [/S] [/Q] [/A[[:]Attribute]] [[Laufwerk:][Pfad]Dateiname

  [Laufwerk:][Pfad]Dateiname
                Gibt die zu löschende(n) Datei(en) an. Mehrere Dateien
                können unter Verwendung von Platzhaltern gelöscht werden.
  /P            Fordert Sie vor dem Löschen jeder Datei zur Bestätigung auf.
  /F            Erzwingt Löschen schreibgeschützter Dateien.
  /S            Löscht alle Dateien in allen Unterverzeichnissen.
  /Q            Keine Rückfrage bei Benutzung globaler Platzhalter.
  /A            Wählt zu löschende Dateien nach Attribut aus.
  Attribute     R  Schreibgeschützte Dateien     S  Systemdateien
                H  Versteckte Dateien            A  Zu archivierende Dateien
                -  vorangestellt dreht Bedeutung um

Wenn die Befehlserweiterungen aktiviert sind, werden DEL und ERASE
folgendermaßen verändert:

Die Anzeigesemantik für die /S-Option ist umgedreht, so daß nur Dateien
angezeigt werden, die gelöscht wurden und nicht solche, die nicht
gefunden wurden.
   
----------------------------------------------------------------------------- 
COLOR 
----------------------------------------------------------------------------- 
   
Legt die Hinter- und Vordergrundfarben für die Konsole fest.

COLOR [attr]

  attr      Gibt die Farbattribute für die Konsolenausgabe 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 = Violett        D = Magenta
    6 = Ocker          E = Gelb
    7 = Hellgrau       F = Weiß

Wenn der COLOR-Befehl ohne Argument aufgerufen wird, werden die Farbein-
stellungen wiederhergestellt, mit denen CMD.EXE gestartet wurde. Diese werden
durch das aktuelle Konsolenfenster, die /T-Befehlszeilenoption oder durch den
Registrierungswert DefaultColor bestimmt.

Der COLOR-Befehl legt den ERRORLEVEL mit 1 fest, wenn versucht wird,
diesen Befehl mit einer Vordergrundfarbe auszuführen, die mit der Hinter-
grundfarbe identisch ist.

Beispiel: "COLOR fc" erzeugt Rot auf weißem Hintergrund.
   
----------------------------------------------------------------------------- 
CD 
----------------------------------------------------------------------------- 
   
Wechselt das Verzeichnis oder zeigt dessen Namen an.

CHDIR [/D] [Laufwerk:][Pfad]
CHDIR [..]
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. Mit CD ohne Parameter wird das aktuelle Laufwerk und
Verzeichnis angezeigt.

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

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

Der angegebene Verzeichnisname wird so konvertiert, daß dieser bezüglich
Groß- und Kleinschreibung dem Namen auf dem Laufwerk entspricht. So wird durch
CD C:\TEMP der aktuelle Pfad auf das Verzeichnis C:\Temp festgelegt, wenn ein
Verzeichnis mit diesem Namen auf dem Laufwerk existiert.

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

    cd Eigene Dateien

ist dasselbe wie:

    cd "Eigene Dateien"

Diese Anführungszeichen müßten eingegeben werden, wenn die Befehlserweiterungen
nicht aktiviert sind.
   
----------------------------------------------------------------------------- 
MD 
----------------------------------------------------------------------------- 
   
Erzeugt ein Verzeichnis.

MKDIR [Laufwerk:]Pfad
MD    [Laufwerk:]Pfad

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

MKDIR erzeugt wenn nötig jedes Zwischenverzeichnis. Wenn zum
Beispiel das Verzeichnis \a nicht existiert, dann ist:

    mkdir \a\b\c\d

dasselbe wie:

    mkdir \a
    chdir \a
    mkdir b
    chdir b
    mkdir c
    chdir c
    mkdir d

Das müßte eingegeben werden, wenn die Befehlserweiterungen nicht
aktiviert sind.
   
----------------------------------------------------------------------------- 
PROMPT 
----------------------------------------------------------------------------- 
   
Ändert die Eingabeaufforderung.

PROMPT [Text]

  Text    Bezeichnet die neue Eingabeaufforderung.

Sie kann aus normalen Zeichen und folgenden Sonderzeichen bestehen:

  $A   & (Kaufmännisches Und)
  $B   | (Verkettungszeichen)
  $C   ( (Klammer auf)
  $D   Aktuelles Datum
  $E   Escapezeichen (ASCII-Code: 27)
  $F   ) (Klammer zu)
  $G   > (Größer-als-Zeichen)
  $H   Rückschritt (löscht vorangehendes Zeichen)
  $L   < (Kleiner-als-Zeichen)
  $N   Aktuelles Laufwerk
  $P   Aktuelles Laufwerk und Pfad
  $Q   = (Gleichheitszeichen)
  $S     (Leertaste)
  $T   Aktuelle Zeit
  $V   Windows NT-Versionsnummer
  $_   Wagenrücklauf und Zeilenvorschub
  $$   $ (Dollarzeichen)

Wenn die Befehlserweiterungen aktiviert sind, unterstützt der PROMPT-Befehl die
folgenden zusätzlichen Zeichen für das Formatieren:

  $+   Keine oder mehr Pluszeichen (+), abhängig von der Anzahl der
       gespeicherten PUSHD-Verzeichnisse, wobei ein Zeichen pro Ebene
       angegeben wird.

  $M   Zeigt den Remote-Namen, der dem aktuellen Laufwerkbuchstaben zugeordnet
       ist, an oder nichts, wenn es sich bei dem aktuellen Laufwerkbuchstaben
       um kein Netzwerklaufwerk handelt.
   
----------------------------------------------------------------------------- 
PUSHD 
----------------------------------------------------------------------------- 

Wechselt Verzeichnis und speichert das alte für POPD
   
PUSHD [Pfad|...]

  Pfad     Gibt das Verzeichnis an, zu dem gewechselt werden soll.

Wenn die Befehlserweiterungen aktiviert sind, akzeptiert der PUSHD-Befehl neben
dem normalen Laufwerkbuchstaben und -pfad auch Netzwerkpfade als Parameter.
Wenn ein Netzwerkpfad angegeben ist, legt PUSHD einen tempor&aulm;ren
Laufwerksbuchstaben fest, der auf die angegebene Netzwerkressource zeigt.
Es wird dann unter Verwendung des neu definierten Laufwerkbuchstaben zum
aktuellen Laufwerk und Verzeichnis gewechselt. Temporäre Laufwerkbuchstaben
werden von Z: abwärts zugeordnet, angefangen beim ersten noch nicht
verwendeten Buchstaben.   

----------------------------------------------------------------------------- 
POPD 
----------------------------------------------------------------------------- 
   
Wechselt zu dem Verzeichnis, das durch PUSHD gespeichert wurde.

POPD

Wenn die Befehlserweiterungen aktiviert sind, löscht der POPD-Befehl alle
temporären von PUSHD erstellten Laufwerkbuchstaben, sobald diese durch den
POPD-Befehl vom Verzeichnisstapel entfernt werden.
   
----------------------------------------------------------------------------- 
SET 
----------------------------------------------------------------------------- 
   
Setzt oder löscht Umgebungsvariablen für CMD.EXE, oder zeigt sie an.

SET [Variable=[Zeichenfolge]]

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

Der Befehl SET ohne Parameter zeigt die derzeitigen Umgebungsvariablen an.

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

Wenn der SET-Befehl mit nur einem Variablennamen aufgerufen wird, das heißt
ohne Gleichheitszeichen oder anderen Wert, wird der Inhalt aller Variablen
angezeigt, deren Namen mit eben diesen 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 ein Gleichheitszeichen (=) als Wert für eine Umgebungs-
variable an jeder Stelle, aber nicht als erstes Zeichen.

Dem SET-Befehl wurde eine neue Option hinzugefügt:

    SET /A Ausdruck

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
    * / %               - arithmetische Operatoren
    + -                 - arithmetische Operatoren
    << >>               - logische Verschiebung
    &                   - bitweise UND
    ^                   - bitweise Exklusives ODER
    |                   - bitweise ODER
    = *= /= %= += -=    - Zuordnung
      &= ^= |= <<= >>=
    ,                   - Trennzeichen für Ausdrücke

Wenn Sie einen der arithmetischen oder Modulo-Operatoren verwenden, müssen
Sie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen. Alle
nichtnumerischen 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,
das heißt 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 einen
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 0b10010 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.

Das Ersetzen von Umgebungsvariablen wurde folgendermaßen verbessert:

    %PATH:str1=str2%

Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im
erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere Zeichen-
folge 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 die fünf
Zeichen, die mit dem elften Zeichen (Offset=10) des erweiterten Ergebnisses
beginnen.
   
----------------------------------------------------------------------------- 
SETLOCAL 
----------------------------------------------------------------------------- 
   
Startet die Begrenzung des Gültigkeitsbereiches von Änderungen.
Änderungen der Umgebung nach SETLOCAL, sind nur auf die Batchdatei
bezogen. Um die ursprünglichen Einstellungen wiederherzustellen, muß
der Befehl ENDLOCAL ausgeführt werden.

SETLOCAL

Mit den Befehlserweiterungen wird der SETLOCAL-Befehl folgendermaßen verändert:

Der SETLOCAL-Batchbefehl akzeptiert jetzt als zusätzliche Argumente entweder
ENABLEEXTENSIONS oder DISABLEEXTENSIONS. Dadurch werden die Befehls-
erweiterungen bis zum entsprechenden ENDLOCAL-Befehl ein- oder ausgeschaltet,
und zwar unabhängig von vorherigen Einstellungen.

Der SETLOCAL-Befehl legt einen ERRORLEVEL fest, wenn ein Argument angegeben
wird. Dieser ist gleich Null für eines der beiden gültigen Argumente und
gleich Eins andernfalls. Das kann man in Batchprogrammen verwenden, um
festzustellen, ob die Befehlserweiterungen zur Verfügung stehen. Siehe dazu
auch folgendes Beispiel:

    VERIFY OTHER 2>nul
    SETLOCAL ENABLEEXTENSIONS
    IF ERRORLEVEL 1 echo   keine Befehlserweiterungen

Dieses Verfahren kann man verwenden, weil in älteren Versionen von CMD.EXE, der
SETLOCAL-Befehl keinen ERRORLEVEL festlegt. Der VERIFY-Befehl mit einem
ungültigen Argument initialisiert den Wert für den ERRORLEVEL mit ungleich Null.
   
----------------------------------------------------------------------------- 
ENDLOCAL 
----------------------------------------------------------------------------- 
   
Beendet die Begrenzung des Gültigkeitsbereiches von Änderungen.
Änderungen der Umgebung nach ENDLOCAL sind nicht mehr nur auf
die Batch-Datei bezogen. Die ursprünglichen Einstellungen
werden nach Beenden der Batch-Datei nicht wiederhergestellt.

ENDLOCAL

Mit den Befehlserweiterungen wird der ENDLOCAL-Befehl folgendermaßen verändert:

Wenn der entsprechende SETLOCAL-Befehl die Befehlserweiterungen mit Hilfe der
neuen Argumente ENABLEEXTENSIONS oder DISABLEEXTENSIONS ein- bzw. aus-
geschaltet hat, wird nach dem ENDLOCAL-Befehl der ursprüngliche Zustand
bezüglich der Befehlserweiterungen wiederhergestellt, und zwar unabhängig von
vorherigen Einstellungen.
   
----------------------------------------------------------------------------- 
IF 
----------------------------------------------------------------------------- 
   
Verarbeitet Ausdrücke mit Bedingungen in einem Batch-Programm.

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

  NOT               Der Befehl soll nur dann ausgeführt werden, wenn die
                    Bedingung nicht erfüllt ist.
  ERRORLEVEL Nummer Ist erfüllt, wenn das zuletzt ausgeführte Programm einen
                    Code größer oder gleich der Nummer zurückgibt.
  Befehl            Der auszuführende Befehl, falls die Bedingung erfüllt 
                    ist.
  Zeichenfolge1==Zeichenfolge2 
                    Ist erfüllt, falls die Zeichenfolgen gleich sind.
  EXIST Dateiname   Ist erfüllt, wenn die angegebene Datei existiert.


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 numerischer Vergleich durchgeführt.

Die Bedingung CMDEXTVERSION arbeitet genau wie ERRORLEVEL, nur das
dabei mit einer internen Versionsnummer der Befehlserweiterungen verglichen
wird. Die erste Verisonsnummer 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). Damit kann man zum Beispiel folgendes tun:

    choice
    goto Antwort%ERRORLEVEL%
    :Antwort1
    echo J für Ja eingegeben
    goto :EOF
    :Antwort2
    echo N für Nein eingegeben

oder mit 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).
   
----------------------------------------------------------------------------- 
FOR 
----------------------------------------------------------------------------- 
   
Führt einen Befehl für jede einzelne Datei eines Satzes von Dateien aus.

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

  %Variable  Ein ersetzbarer Parameter
  (Satz)     Eine 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 die angegebenen Befehle

Um den FOR-Befehl in einem Batch-Programm zu benutzen, geben Sie %%Variable
statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablennamen,
%i und %I sind verschieden.

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
    root) 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
    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 (Dateien-Satz) DO Befehl [Parameter]

    Der Dateien-Satz besteht aus einem oder mehreren Dateinamen. Jede Datei
    wird geöffnet, gelesen und bearbeitet, dann wird zur nächsten Datei des
    Satzes gegangen. Die Bearbeitung einer Datei erfolgt zeilenweise, jede
    einzelne Textzeile wird analysiert 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ührungs-
    zeichen, welche eines oder mehrere Schlüsselwörter enthält, um verschiedene
    Parameter für die Analyse anzugeben. Diese Schlüsselwörter sind:

        eol=c           - gibt das Zeichen für das Zeilenende 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, das ersetzt 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, daß 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.

    Folgendes Beispiel soll das nochmals verdeutlichen:

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

    Dadurch wird jede Zeile in der Datei myfile.txt analysiert, 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. Trennzeichen 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.

    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. Bedenken Sie,
    daß FOR-Variablen global sind und nicht mehr als insgesamt 26 zu einem
    bestimmten Zeitpunkt aktiv sein dürfen.

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

    Schließlich können Sie den Befehl FOR /F auch verwenden, um die Ausgabe
    eines Befehls zu analysieren. Dazu geben Sie als Dateien-Satz zwischen den
    Klammern eine Zeichenkette in einfachen Anführungszeichen 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 analysiert. Das folgende Beispiel listet die Umgebungs-
    variablen im aktuellen Verzeichnis auf:

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

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

    %~fi        - expandiert %i zu einem vollständigen Dateinamen
    %~di        - erzeugt nur den Laufwerksbuchstaben 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
    %~$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 Laufwerksbuchstaben 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.

In den angegebenen Beispielen können %i und PATH durch andere gültige
Werte ersetzt werden. Seien Sie sorgfältig bei der Wahl der Buchstaben für Ihre
FOR-Variablen, wenn Sie die erweiterte Logik für die Ersetzung von Variablen
verwenden wollen. Andernfalls kann es zu einer widersprüchlichen Befehls-
syntax kommen.
   
----------------------------------------------------------------------------- 
CALL 
----------------------------------------------------------------------------- 
   
Ruft eine Batch-Datei von einer anderen aus auf.

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

  Parameter  Bezeichnet beliebige Angaben in der Befehlszeile, die von
             dem aufgerufenen Batch-Programm 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 Batch-Kontext 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
(%0, %1 etc.) wie folgt geändert:

    %* in einer Batchdatei bezieht sich auf alle Argumente (z.B. %1 %2
        %3 %4 %5 ...).

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

        %~f1        - expandiert %1 zu einem vollständigen Dateinamen.
        %~d1        - erzeugt nur den Laufwerksbuchstaben von %1.
        %~p1        - erzeugt nur den Pfad von %1.
        %~n1        - erzeugt nur den Dateinamen von %1.
        %~x1        - erzeugt nur die Dateierweiterung von %1.
        %~s1        - ändert die Bedeutung der n und x Optionen um den
                       kurzen Dateinamen zu erzeugen.
        %~$PATH:1   - durchsucht die in der PATH-Umgebungsvariablen
                       angegebenen Verzeichnisse und expandiert die erste
                       gefundene Datei %1 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 Laufwerksbuchstaben und Pfad von %1.
        %~nx1       - erzeugt den Dateinamen und die Dateierweiterung von %1.
        %~dp$PATH:1 - durchsucht die in der PATH-Umgebungsvariablen ange-
                       gebenen Verzeichnisse nach %1 und erzeugt den Lauf-
                       werksbuchstaben und Pfad der ersten gefundenen Datei.

      In den angegebenen Beispielen können %1 und PATH durch andere gültige
      Werte ersetzt werden.

   
----------------------------------------------------------------------------- 
SHIFT 
----------------------------------------------------------------------------- 
   
Verändert die Position ersetzbarer Parameter in einem Batch-Programm.

SHIFT [/n]

Wenn die Befehlserweiterungen aktiviert sind, unterstützt der SHIFT-Befehl
die /n-Option. Damit wird mit dem Verschieben beim n-ten Argument begonnen,
wobei n zwischen Null und Acht liegt. So wird zum Beispiel durch:

    SHIFT /2

das Argument %3 nach %2, %4 nach %3 usw. verschoben, während die
Argumente %0 und %1 nicht verschoben werden.
   
----------------------------------------------------------------------------- 
GOTO 
----------------------------------------------------------------------------- 
   
Setzt die Ausführung eines Batch-Programms an einer Marke fort.

GOTO Marke

  Marke   Eine Zeichenfolge als Marke in einem Batch-Programm.

Marken stehen allein am Zeilenanfang mit einem vorangestellten Doppelpunkt.

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.
Geben Sie CALL /? ein, um weitere Informationen über die Erweiterungen des
CALL-Befehls zu erhalten.
   
----------------------------------------------------------------------------- 
START 
----------------------------------------------------------------------------- 

Startet ein eigenes Fenster, um das Programm oder den Befehl auszuführen.

START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME] [/WAIT] [/B] [Befehl/Programm]
      [Parameter]

  "Titel"   Der Titel des neuen Fensters.
  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 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.
  Befehl/Programm
            Wenn ein interner Befehl oder eine Batch-Datei verwendet wird,
            wird das neue CMD-Fenster mit Parameter /K gestartet.
            Das bedeutet, daß das Fenster erhalten bleibt, nachdem der
            Befehl abgearbeitet wurde.
            Wenn dies nicht der Fall ist, wird das Programm entweder
            als Anwendung in einem Fenster oder als Konsolenanwendung
            gestartet.
  Parameter Parameter, die an den Befehl oder das Programm übergeben werden
            sollen.


Wenn die Befehlserweiterungen aktiviert sind, wird der Aufruf von externen
Befehlen durch die Befehlszeile oder den START-Befehl folgendermaßen verändert:

Nichtausführbare Dateien können durch ihre Zuordnung zu einem Dateityp
    einfach durch Eingabe des Namens als Befehl aufgerufen werden (z.B. würde
    WORD.DOC die Anwendung starten, die der .DOC-Erweiterung zugeordnet ist).
    Weitere Informationen, wie Sie diese Zuordnungen innerhalb eines Befehls-
    skripts ändern, finden Sie beim ASSOC- bzw. FTYPE-Befehl.

Wird eine grafische 32-Bit-Anwendung aufgerufen, wartet CMD.EXE nicht auf
    das Beenden dieser Anwendung, sondern kehrt sofort zur Eingabeauforderung
    zurück. Das gilt NICHT, wenn diese Anwendung aus einem Befehlsskript
    heraus aufgerufen wird.

Wenn eine Befehlszeile ausgeführt wird, die mit den Zeichen CMD ohne
    Erweiterung oder Pfadname beginnt, wird CMD durch den Wert der
    COMSPEC-Variablen ersetzt. Damit wird es vermieden, daß man aus Versehen
    eine andere, ggf. zufällige Version der CMD.EXE verwendet.

Wenn eine Befehlszeile ausgeführt wird, die mit Zeichen beginnt, die keine
    Dateierweiterung enthalten, dann verwendet CMD.EXE den Wert der Umgebungs-
    variablen PATHEXT, um zu bestimmen, welche Erweiterungen in welcher
    Reihenfolge verwendet werden. Der Standardwert für die PATHEXT-Variable
    ist:

        .COM;.EXE;.BAT;.CMD

    Dabei ist die Syntax dieselbe wie in der PATH-Variablen, das heißt, die 
    einzelnen Einträge werden durch Semikolon getrennt.

Wenn mit dem START-Befehl ein Programm bzw. Befehl aufgerufen wird und keine
entsprechende Dateierweiterung gefunden wird, aber der Name ohne Erweiterung
einem Verzeichnisnamen entspricht, wird der Explorer mit diesem Pfad
aufgerufen. Von der Befehlszeile ausgeführt entspricht das einem CD /D mit
diesem Pfad.
   
----------------------------------------------------------------------------- 
ASSOC 
----------------------------------------------------------------------------- 
   
Zeigt die Zuordnungen mit den Dateierweiterungen an oder ändert sie.

ASSOC [.ERW[=[Dateityp]]]

  .ERW      Gibt die Dateierweiterung für die Zuordnung mit dem Dateityp an.
  Dateityp  Gibt den Dateityp für die Zuordnung mit der Dateierweiterung an.

Geben Sie ASSOC ohne Parameter ein, um die aktuellen Zuordnungen anzuzeigen.
Wenn ASSOC mit einer bestimmten Dateierweiterung aufgerufen wird, wird diese 
Zuordnung mit der jeweiligen Dateierweiterung angezeigt. Wenn Sie keinen Datei-
typ angegeben haben, wird die Zuordnung für diese Dateierweiterung gelöscht.
   
----------------------------------------------------------------------------- 
FTYPE 
----------------------------------------------------------------------------- 
   
Zeigt die Dateitypen an, die bei den Zuordnungen für die entsprechenden
Dateierweiterungen verwendet werden, oder ändert sie.

FTYPE [Dateityp[=[Öffnen-Befehl]]]

  Dateityp        Gibt den Dateityp zur Überprüfung oder Änderung an.
  Öffnen-Befehl   Gibt den beim Aufruf von Dateien dieses Typs zu
                  verwendenden Öffnen-Befehl an.

Geben Sie FTYPE ohne Parameter an, um die aktuellen Dateitypen anzuzeigen,
für die Öffnen-Befehle definiert sind. Wenn FTYPE mit nur einem Dateityp
aufgerufen wird, wird der aktuelle Öffnen-Befehl angezeigt.
Wenn Sie keinen expliziten Öffnen-Befehl angeben, wird der FTYPE-Befehl den
Öffnen-Befehl für diesen Dateityp löschen. %0 oder %1 wird innerhalb eines
Öffnen-Befehls mit dem Dateinamen ersetzt, der über die Zuordnung aufgerufen
wird. %* liefert alle Parameter, und %2 liefert den ersten Parameter, %3
den zweiten usw. Mit %~n erhalten Sie die verbleibenden Parameter beginnend
mit dem n-ten, dabei ist n ein Wert zwischen 2 und 9.
Zum Beispiel würde:

    ASSOC .pl=PerlSkript
    FTYPE PerlSkript=perl.exe %1 %*

es Ihnen ermöglichen ein Perl-Skript wie folgt aufzurufen:

    skript.pl 1 2 3

Wenn Sie auch die Eingabe der Dateierweiterung vermeiden wollen, geben Sie
folgendes ein:

    set PATHEXT=.pl;%PATHEXT%

Dadurch können Sie jetzt das Skript einfach aufrufen:

    skript 1 2 3


Die Dokumentation wurde erzeugt mit:
@echo off
:start
if not "%1" == "" goto docCmd
echo. >cmd.doc
for %%c in (CMD DEL COLOR CD MD PROMPT PUSHD POPD SET SETLOCAL ENDLOCAL IF FOR CALL SHIFT GOTO START ASSOC FTYPE) do call .\cmd-doc.cmd %%c
goto ende

:docCmd
echo %1...
echo.   >>cmd.doc
echo ----------------------------------------------------------------------------- >>cmd.doc
echo %1 >>cmd.doc
echo ----------------------------------------------------------------------------- >>cmd.doc
echo.   >>cmd.doc
help %1 >>cmd.doc

:ende

weitere Tips


[HOME]
13.06.2005 Thomas Glöckler