Interne Befehle der CMD-Shell

Diesen kleinen Kurs widme ich der DOS-Shell und deren Befehle. Seit der Einführung von Windows und nun Windows XP gerät sie zusehends in Vergessenheit. Linux-ianer wissen die Mächtigkeit der „Shell“ jedoch nach wie vor zu schätzen. Für alle Interessieren hier nun eine kleine Übersicht und Hinweise wie man unter WinXP kleine Aufgaben automatisieren kann.Grundlage:Starten Sie eine DOS-Shell mit dem Befehl START-AUSFÜHREN-„CMD [Enter]“.Dort können Sie die DOS-Befehle eingeben oder auch eine Text-Datei mit der Endung .BAT oder .CMD anlegen. Letzteres hat den Vorteil das Sie sich eigene Befehls-Abfolgen anlegen können. Sogar logische Operationen (IF THEN ELSE WHILE ….) sind kein Problem.Übergebene Parameter an eine solche Batch-Datei stehen Ihnen mit %1 %2 etc. zur Verfügung.—————————————————————————– 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 dieErweiterungen 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\EnableExtensionsFolgende 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 FTYPESie 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]DateinameERASE [/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 umWenn die Befehlserweiterungen aktiviert sind, werden DEL und ERASEfolgendermaßen verändert:Die Anzeigesemantik für die /S-Option ist umgedreht, so daß nur Dateienangezeigt werden, die gelöscht wurden und nicht solche, die nichtgefunden 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 erstebezieht sich auf den Hintergrund, die zweite auf den Vordergrund. Jede Zifferkann 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 werdendurch das aktuelle Konsolenfenster, die /T-Befehlszeilenoption oder durch denRegistrierungswert 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 angegebenenLaufwerk anzuzeigen. Mit CD ohne Parameter wird das aktuelle Laufwerk undVerzeichnis angezeigt.Verwenden Sie die /D-Option, um zusätzlich zum Wechseln des Verzeichnissesauch das aktuelle Laufwerk zu wechseln.Wenn die Befehlserweiterungen aktiviert sind, wird CHDIR folgendermaßenverändert:Der angegebene Verzeichnisname wird so konvertiert, daß dieser bezüglichGroß- und Kleinschreibung dem Namen auf dem Laufwerk entspricht. So wird durchCD C:\TEMP der aktuelle Pfad auf das Verzeichnis C:\Temp festgelegt, wenn einVerzeichnis mit diesem Namen auf dem Laufwerk existiert.Der CHDIR-Befehl behandelt Leerzeichen nicht als Begrenzungszeichen, so daß esmöglich ist, in ein Unterverzeichnis zu wechseln, dessen Name ein Leerzeichenenthält, ohne diesen mit Anführungszeichen einzuschließen. Beispiel: cd Eigene Dateienist dasselbe wie: cd „Eigene Dateien“Diese Anführungszeichen müßten eingegeben werden, wenn die Befehlserweiterungennicht aktiviert sind.—————————————————————————– MD —————————————————————————– Erzeugt ein Verzeichnis.MKDIR [Laufwerk:]PfadMD [Laufwerk:]PfadWenn die Befehlserweiterungen aktiviert sind, wird MKDIR folgendermaßenverändert:MKDIR erzeugt wenn nötig jedes Zwischenverzeichnis. Wenn zumBeispiel das Verzeichnis \a nicht existiert, dann ist: mkdir \a\b\c\ddasselbe wie: mkdir \a chdir \a mkdir b chdir b mkdir c chdir c mkdir dDas müßte eingegeben werden, wenn die Befehlserweiterungen nichtaktiviert 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 diefolgenden 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 POPDPUSHD [Pfad|.. .] Pfad Gibt das Verzeichnis an, zu dem gewechselt werden soll.Wenn die Befehlserweiterungen aktiviert sind, akzeptiert der PUSHD-Befehl nebendem normalen Laufwerkbuchstaben und -pfad auch Netzwerkpfade als Parameter.Wenn ein Netzwerkpfad angegeben ist, legt PUSHD einen tempor&aulm;renLaufwerksbuchstaben fest, der auf die angegebene Netzwerkressource zeigt.Es wird dann unter Verwendung des neu definierten Laufwerkbuchstaben zumaktuellen Laufwerk und Verzeichnis gewechselt. Temporäre Laufwerkbuchstabenwerden von Z: abwärts zugeordnet, angefangen beim ersten noch nichtverwendeten Buchstaben. ----------------------------------------------------------------------------- POPD ----------------------------------------------------------------------------- Wechselt zu dem Verzeichnis, das durch PUSHD gespeichert wurde.POPDWenn die Befehlserweiterungen aktiviert sind, löscht der POPD-Befehl alletemporären von PUSHD erstellten Laufwerkbuchstaben, sobald diese durch denPOPD-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ßenverändert:Wenn der SET-Befehl mit nur einem Variablennamen aufgerufen wird, das heißtohne Gleichheitszeichen oder anderen Wert, wird der Inhalt aller Variablenangezeigt, deren Namen mit eben diesen Buchstaben beginnen. So werden durch SET Palle Variablen angezeigt, die mit dem Buchstaben ?P? beginnen.Der SET-Befehl legt den ERRORLEVEL mit 1 fest, wenn der Variablenname nichtin 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 AusdruckDie /A-Option gibt an, daß die Zeichenfolge rechts vom Gleichheitszeichenein numerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogrammdes Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrerAnordnung mit abnehmendem Vorrang: () - Gruppierung / % – arithmetische Operatoren + – – arithmetische Operatoren> – logische Verschiebung& – bitweise UND ^ – bitweise Exklusives ODER | – bitweise ODER = = /= %= += -= – Zuordnung&= ^= |= = , – Trennzeichen für AusdrückeWenn Sie einen der arithmetischen oder Modulo-Operatoren verwenden, müssenSie die Zeichenfolge für den Ausdruck in Anführungszeichen setzen. Allenichtnumerischen Zeichenfolgen im Ausdruck werden als Zeichenfolgen vonUmgebungsvariablen behandelt, deren Werte vor der Verwendung in Zahlenkonvertiert werden. Wenn eine Umgebungsvariable angegeben wird, die nichtdefiniert ist, wird für diese der Wert Null verwendet. Somit können Siemit 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 erden endgültigen Wert des Ausdrucks an. Der Zuordnungsoperator erforderteine Umgebungsvariable auf der linken Seite des Operators.Numerische Werte stellen immer Dezimalzahlen dar, es sei denn sie haben einenPräfix 0x für hexadezimale Zahlen, 0b für binäre Zahlen oder 0 für oktaleZahlen. Damit stellt 0x12 dieselbe Zahl wie 0b10010 oder 022 dar. Beachten Sie,daß die oktale Schreibweise verwirrend sein kann: So sind 08 und 09 keinegü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“ imerweiterten Ergebnis mit „str2“ ersetzt wird. „str2“ kann die leere Zeichen-folge sein, um alle Instanzen von „str1“ aus der erweiterten Ausgabezu löschen. Wenn „str1“ mit einem Sternchen beginnt, steht „str1“ für alleszwischen 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ünfZeichen, die mit dem elften Zeichen (Offset=10) des erweiterten Ergebnissesbeginnen.—————————————————————————– SETLOCAL —————————————————————————– Startet die Begrenzung des Gültigkeitsbereiches von Änderungen.Änderungen der Umgebung nach SETLOCAL, sind nur auf die Batchdateibezogen. Um die ursprünglichen Einstellungen wiederherzustellen, mußder Befehl ENDLOCAL ausgeführt werden.SETLOCALMit den Befehlserweiterungen wird der SETLOCAL-Befehl folgendermaßen verändert:Der SETLOCAL-Batchbefehl akzeptiert jetzt als zusätzliche Argumente entwederENABLEEXTENSIONS 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 angegebenwird. Dieser ist gleich Null für eines der beiden gültigen Argumente undgleich Eins andernfalls. Das kann man in Batchprogrammen verwenden, umfestzustellen, ob die Befehlserweiterungen zur Verfügung stehen. Siehe dazuauch folgendes Beispiel: VERIFY OTHER 2>nul SETLOCAL ENABLEEXTENSIONS IF ERRORLEVEL 1 echo keine BefehlserweiterungenDieses Verfahren kann man verwenden, weil in älteren Versionen von CMD.EXE, derSETLOCAL-Befehl keinen ERRORLEVEL festlegt. Der VERIFY-Befehl mit einemungü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 aufdie Batch-Datei bezogen. Die ursprünglichen Einstellungenwerden nach Beenden der Batch-Datei nicht wiederhergestellt.ENDLOCALMit den Befehlserweiterungen wird der ENDLOCAL-Befehl folgendermaßen verändert:Wenn der entsprechende SETLOCAL-Befehl die Befehlserweiterungen mit Hilfe derneuen Argumente ENABLEEXTENSIONS oder DISABLEEXTENSIONS ein- bzw. aus-geschaltet hat, wird nach dem ENDLOCAL-Befehl der ursprüngliche Zustandbezüglich der Befehlserweiterungen wiederhergestellt, und zwar unabhängig vonvorherigen Einstellungen.—————————————————————————– IF —————————————————————————– Verarbeitet Ausdrücke mit Bedingungen in einem Batch-Programm.IF [NOT] ERRORLEVEL Nummer BefehlIF [NOT] Zeichenfolge1==Zeichenfolge2 BefehlIF [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 BefehlDabei 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 gleichDie /I-Option wird angegeben, um die Groß-/Kleinschreibung beim Vergleich zuignorieren. Die /I-Option kann auch in der Form Zeichenfolge1==Zeichenfolge2verwendet werden. Diese Vergleiche sind allgemein, das heißt, wenn beideZeichenfolgen nur aus Ziffern bestehen, werden die Zeichenfolgen in
Zahlenumgewandelt, und es wird ein numerischer Vergleich durchgeführt.Die Bedingung CMDEXTVERSION arbeitet genau wie ERRORLEVEL, nur dasdabei mit einer internen Versionsnummer der Befehlserweiterungen verglichenwird. Die erste Verisonsnummer ist 1. Diese wird um eins erhöht werden, wennbedeutende Verbesserungen an den Befehlserweiterungen gemacht werden.Die Bedingung CMDEXTVERSION ist falsch, wenn die Befehlserweiterungen nichtaktiviert sind.Die Bedingung DEFINED arbeitet genau wie EXIST, bezieht sich aber aufden Namen einer Umgebungsvariablen und ist wahr, wenn die Umgebungs-variable definiert ist.Der Ausdruck %ERRORLEVEL% wird zu einer Zeichendarstellung desaktuellen Werts der Variablen ERRORLEVEL expandiert (vorausgesetzt, es gibtnicht bereits eine Umgebungsvariable mit dem Namen ERRORLEVEL, derenWert 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 eingegebenoder mit Verwendung der Vergleichsoperatoren: IF %ERRORLEVEL% LEQ 1 goto okDer Ausdruck %CMDCMDLINE% wird zu der originalen Befehlszeile expandiert,die CMD.EXE vor irgendeiner Bearbeitung übergeben wird (vorausgesetzt es gibtnicht bereits eine Umgebungsvariable mit dem Namen CMDCMDLINE, derenWert 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 BefehleUm den FOR-Befehl in einem Batch-Programm zu benutzen, geben Sie %%Variablestatt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablennamen,%i und %I sind verschieden.Wenn die Befehlserweiterungen aktiviert sind, werden folgendeErgä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 %iZusä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ültigeWerte ersetzt werden. Seien Sie sorgfältig bei der Wahl der Buchstaben für IhreFOR-Variablen, wenn Sie die erweiterte Logik für die Ersetzung von Variablenverwenden 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-Befehlfolgendermaßen verändert:Der CALL-Befehl akzeptiert j
etzt Marken als Sprungziele.Die Syntax ist: CALL :Marke ArgumenteMit den angegebenen Argumenten wird ein neuer Batch-Kontext erzeugt unddie Programmausführung hinter der angegebenen Marke fortgesetzt. Um die Batch-datei dort tatsächlich zu verlassen, muß man sie zweimal beenden. Beim erstenErreichen des Endes wird das Programm zu dem Befehl hinter dem CALL-Aufrufzurückkehren. Beim zweiten Mal wird dann die Batchdatei beendet. Geben SieGOTO /? ein, um weitere Informationen über die Erweiterung von GOTO :EOF zuerhalten, 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-Befehldie /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 /2das Argument %3 nach %2, %4 nach %3 usw. verschoben, während dieArgumente %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-Befehlfolgendermaßen verändert:Der GOTO-Befehl unterstützt jetzt die Marke :EOF. Dadurch wird die Bearbeitungam Ende der aktuellen Batchdatei fortgesetzt. Das ist eine einfacheMöglichkeit, eine Batchdatei zu beenden, ohne ein Sprungziel zu definieren.Geben Sie CALL /? ein, um weitere Informationen über die Erweiterungen desCALL-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 externenBefehlen 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 keineentsprechende Dateierweiterung gefunden wird, aber der Name ohne Erweiterungeinem Verzeichnisnamen entspricht, wird der Explorer mit diesem Pfadaufgerufen. Von der Befehlszeile ausgeführt entspricht das einem CD /D mitdiesem 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 entsprechendenDateierweiterungen 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 Dateitypaufgerufen 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 aufgerufenwird. %
liefert alle Parameter, und %2 liefert den ersten Parameter, %3den zweiten usw. Mit %~n erhalten Sie die verbleibenden Parameter beginnendmit 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 3Wenn Sie auch die Eingabe der Dateierweiterung vermeiden wollen, geben Siefolgendes ein: set PATHEXT=.pl;%PATHEXT%Dadurch können Sie jetzt das Skript einfach aufrufen: skript 1 2 3