Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führt einen angegebenen Befehl für jede Datei innerhalb einer Gruppe von Dateien aus.
Syntax
for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]
Die Parameter
Parameter | BESCHREIBUNG |
---|---|
{%% \| %}<variable> |
Erforderlich. Stellt einen austauschbaren Parameter dar. Verwenden Sie ein einzelnes Prozentzeichen (% ), um den Befehl an der Eingabeaufforderung auszuführen. Verwenden Sie doppelte Prozentzeichen (%% ), um den Befehl in einer Batchdatei auszuführen. Bei Variablen wird die Groß-/Kleinschreibung beachtet, und sie müssen mit einem alphabetischen Wert wie %a, %boder %cdargestellt werden. |
(<set> ) |
Erforderlich. Gibt eine oder mehrere Dateien, Verzeichnisse oder Textzeichenfolgen oder einen Wertebereich an, für den der Befehl ausgeführt werden soll. Die Klammern sind erforderlich. |
<command> |
Erforderlich. Gibt den Befehl an, den Sie für jede Datei, jedes Verzeichnis oder jede Textzeichenfolge oder für den Wertebereich ausführen möchten, der im Satz enthalten ist. |
<commandlineoptions> |
Gibt alle Befehlszeilenoptionen an, die Sie mit dem angegebenen Befehl verwenden möchten. |
/? | Zeigt die Hilfe an der Eingabeaufforderung an. |
Bemerkungen
Sie können diesen Befehl in einer Batchdatei oder direkt über die Eingabeaufforderung verwenden.
Die folgenden Attribute gelten für den Befehl :
Dieser Befehl ersetzt
% variable
oder%% variable
durch jede Textzeichenfolge im angegebenen Satz, bis der angegebene Befehl alle Dateien verarbeitet.Variablennamen sind Groß-/Kleinschreibung, global und nicht mehr als 52 können gleichzeitig aktiv sein.
Um Verwirrung mit den Batchparametern zu vermeiden,
%0
%9
können Sie ein beliebiges Zeichen für Variable mit Ausnahme der Ziffern 0 bis 9 verwenden. Bei einfachen Batchdateien funktioniert beispielsweise ein einzelnes Zeichen%%f
.Sie können mehrere Werte für die Variable in komplexen Batchdateien verwenden, um verschiedene austauschbare Variablen zu unterscheiden.
Der Set-Parameter kann eine einzelne Gruppe von Dateien oder mehrere Gruppen von Dateien darstellen. Mit Wildcardzeichen (* und ?) können Sie einen Dateisatz angeben. Es folgen gültige Dateisätze:
(*.doc) (*.doc *.txt *.me) (jan*.doc jan*.rpt feb*.doc feb*.rpt) (ar??1991.* ap??1991.*)
Wenn Sie diesen Befehl verwenden, wird der erste Wert im Satz ersetzt
% variable
oder%% variable
, und dann verarbeitet der angegebene Befehl diesen Wert. Dies wird fortgesetzt, bis alle Dateien (oder Gruppen von Dateien), die dem festgelegten Wert entsprechen, verarbeitet werden.In und do aren't parameters, but you must use them with this command. Wenn Sie eines dieser Schlüsselwörter weglassen, wird eine Fehlermeldung angezeigt.
Wenn Befehlserweiterungen aktiviert sind (das ist der Standardwert ), werden die folgenden zusätzlichen Formen unterstützt:
Nur Verzeichnisse: Wenn "set" Wildcardzeichen (* oder ?) enthält, wird der angegebene Befehl für jedes Verzeichnis (anstelle einer Reihe von Dateien in einem angegebenen Verzeichnis) ausgeführt, die dem Satz entsprechen. Die Syntax lautet:
for /d {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Rekursiv: Führt die Verzeichnisstruktur durch, die mit drive:path verwurzelt ist, und führt die for-Anweisung in jedem Verzeichnis der Struktur aus. Wenn nach /r kein Verzeichnis angegeben wird, wird das aktuelle Verzeichnis als Stammverzeichnis verwendet. Wenn der Wert nur ein einzelner Punkt (.) ist, wird nur die Verzeichnisstruktur aufgezählt. Die Syntax lautet:
for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Durchlaufen eines Wertebereichs: Verwenden Sie eine iterative Variable, um den Anfangswert (Start#) festzulegen, und durchlaufen Sie dann einen festgelegten Wertebereich, bis der Wert den festgelegten Endwert (Ende#) überschreitet. /l führt das Iterative aus, indem "start#" mit "end#" verglichen wird. Wenn start# kleiner als Ende# ist, wird der Befehl ausgeführt. Wenn die iterative Variable end# überschreitet, beendet die Befehlsshell die Schleife. Sie können auch einen negativen Schritt# verwenden, um einen Bereich in abnehmenden Werten zu durchlaufen. Beispielsweise generiert (1,1,5) die Sequenz 1 2 3 4 5 und (5,-1,1) die Sequenz 5 4 3 2 1. Die Syntax lautet:
for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlineoptions>]
Iterieren und Dateianalyse: Verwenden Sie die Dateianalyse, um Befehlsausgabe, Zeichenfolgen und Dateiinhalte zu verarbeiten. Verwenden Sie iterative Variablen, um die Inhalte oder Zeichenfolgen zu definieren, die Sie untersuchen möchten, und verwenden Sie die verschiedenen Analyseschlüsselwortoptionen , um die Analyse weiter zu ändern. Verwenden Sie die Tokenoption " Parsingkeywords ", um anzugeben, welche Token als iterative Variablen übergeben werden sollen. Wenn sie ohne die Tokenoption verwendet wird, überprüft /f nur das erste Token.
Die Dateianalyse besteht aus dem Lesen der Ausgabe, Zeichenfolge oder dateiinhalte und dann in einzelne Textzeilen aufteilen und jede Zeile in null oder mehr Token analysieren. Die for-Schleife wird dann aufgerufen, wobei der iterative Variablenwert auf das Token festgelegt ist. Standardmäßig übergibt /f das erste leere, getrennte Token von jeder Zeile jeder Datei. Leere Zeilen werden übersprungen.
Die Syntaxen sind:
for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlineoptions>] for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlineoptions>]
Das Set-Argument gibt einen oder mehrere Dateinamen an. Jede Datei wird geöffnet, gelesen und verarbeitet, bevor Sie zur nächsten Datei wechseln. Um das Standardanalyseverhalten außer Kraft zu setzen, geben Sie parsingkeywords an. Dies ist eine Zeichenfolge, die ein oder mehrere Schlüsselwörter enthält, um verschiedene Analyseoptionen anzugeben.
Wenn Sie die Option "usebackq " verwenden, verwenden Sie eine der folgenden Syntaxen:
for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<literalstring>') do <command> [<commandlineoptions>] for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlineoptions>]
In der folgenden Tabelle sind die Analysestichwörter aufgeführt, die Sie für die Analyse von Schlüsselworten verwenden können.
Schlüsselwort BESCHREIBUNG eol= <c>
Gibt ein Zeilenendezeichen an (nur ein Zeichen). überspringen= <n>
Gibt die Anzahl der Zeilen an, die am Anfang der Datei übersprungen werden sollen. delims= <xxx>
Gibt einen Trennzeichensatz an. Dadurch wird der Standardtrennzeichensatz von Leerzeichen und Tabstopp ersetzt. token= <x,y,m–n>
Gibt an, welche Token aus jeder Zeile für jede Iteration an die For-Schleife übergeben werden sollen. Daher werden zusätzliche Variablennamen zugewiesen. m-n gibt einen Bereich vom m-thbis zum n-tenToken an. Wenn das letzte Zeichen in der Token= -Zeichenfolge ein Sternchen (*) ist, wird eine zusätzliche Variable zugewiesen und erhält den verbleibenden Text in der Zeile nach dem letzten analysierten Token. usebackq Gibt an, dass eine in Anführungszeichen gesetzte Zeichenfolge als Befehl ausgeführt werden soll, eine in Anführungszeichen gesetzte Zeichenfolge als Literalzeichenfolge oder für lange Dateinamen, die Leerzeichen enthalten, Dateinamen zulassen <set>
, jeweils in doppelte Anführungszeichen eingeschlossen werden.Variablenersetzung: In der folgenden Tabelle sind optionale Syntax (für jede Variable I) aufgeführt:
Variable mit Modifizierer BESCHREIBUNG %~I
Erweitert, wodurch alle umgebenden Anführungszeichen %I
entfernt werden.%~fI
Erweitert %I
sich auf einen vollqualifizierten Pfadnamen.%~dI
Erweitert %I
nur auf einen Laufwerkbuchstaben.%~pI
Erweitert %I
nur auf einen Pfad.%~nI
Erweitert %I
nur auf einen Dateinamen.%~xI
Wird %I
nur auf eine Dateinamenerweiterung erweitert.%~sI
Erweitert den Pfad, um nur Kurznamen zu enthalten. %~aI
%I
Erweitert die Dateiattribute der Datei.%~tI
%I
Erweitert das Datum und die Uhrzeit der Datei.%~zI
Erweitert %I
die Größe der Datei.%~$PATH:I
Durchsucht die in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse und erweitert sich auf den vollqualifizierten Namen des ersten gefundenen Verzeichnisses %I
. Wenn der Name der Umgebungsvariable nicht definiert ist oder die Datei von der Suche nicht gefunden wird, wird dieser Modifizierer auf die leere Zeichenfolge erweitert.In der folgenden Tabelle sind Zusatzkombinationen aufgeführt, die Sie verwenden können, um zusammengesetzte Ergebnisse zu erhalten.
Variable mit kombinierten Modifizierern BESCHREIBUNG %~dpI
Erweitert %I
nur auf einen Laufwerkbuchstaben und Pfad.%~nxI
%I
Erweitert nur auf einen Dateinamen und eine Erweiterung.%~fsI
Erweitert nur einen vollständigen %I
Pfadnamen mit Kurznamen.%~dp$PATH:I
Durchsucht die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind, und %I
erweitert sie auf den Laufwerkbuchstaben und Pfad des ersten gefundenen Verzeichnisses.%~ftzaI
Erweitert %I
sich auf eine Ausgabezeile, die wie dir ist.In den obigen Beispielen können Sie PATH durch andere gültige Werte ersetzen
%I
. Ein gültiger Variablenname beendet die %~ Syntax.Mithilfe von Variablennamen in Großbuchstaben, z
%I
. B. , können Sie den Code besser lesbar machen und Verwirrung mit den Modifizierern vermeiden, bei denen die Groß-/Kleinschreibung nicht beachtet wird.
Analysieren einer Zeichenfolge: Sie können die
for /f
Analyselogik für eine sofortige Zeichenfolge verwenden, indem Sie entweder doppelte Anführungszeichen (<literalstring>
usebackq) oder in einfachen Anführungszeichen (mit usebackq) --z. B. (MyString) oder ('MyString') umschließen.<literalstring>
wird als einzelne Eingabezeile einer Datei behandelt. Bei der Analyse in doppelten Anführungszeichen<literalstring>
werden Befehlssymbole wie (\ & | > < ^
) als normale Zeichen behandelt.Analyseausgabe: Sie können den
for /f
Befehl verwenden, um die Ausgabe eines Befehls zu analysieren, indem Sie einen in Klammern gesetzten<command>
umgekehrten Klammern platzieren. Es wird als Befehlszeile behandelt, die an ein untergeordnetes Cmd.exeübergeben wird. Die Ausgabe wird im Arbeitsspeicher erfasst und analysiert, als ob es sich um eine Datei handelt.
Beispiele
Verwenden Sie die folgende Syntax, um sie in einer Batchdatei zu verwenden:
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Um den Inhalt aller Dateien im aktuellen Verzeichnis anzuzeigen, die die Erweiterung .doc oder .txt haben, indem Sie die austauschbare Variable %fverwenden, geben Sie Folgendes ein:
for %f in (*.doc *.txt) do type %f
Im vorherigen Beispiel wird jede Datei, die die .doc- oder .txt Erweiterung im aktuellen Verzeichnis enthält, durch die variable%f ersetzt, bis der Inhalt jeder Datei angezeigt wird. Um diesen Befehl in einer Batchdatei zu verwenden, ersetzen Sie jedes Vorkommen von %f durch %%f. Andernfalls wird die Variable ignoriert und eine Fehlermeldung angezeigt.
Um eine Datei zu analysieren, geben Sie folgendes ein, indem Sie kommentierte Zeilen ignorieren:
for /f eol=; tokens=2,3* delims=, %i in (myfile.txt) do @echo %i %j %k
Dieser Befehl analysiert jede Zeile in myfile.txt. Es ignoriert Zeilen, die mit einem Semikolon beginnen und das zweite und dritte Token von jeder Zeile an den Textkörper übergeben (Token werden durch Kommas oder Leerzeichen getrennt). Der Textkörper der for-Anweisung verweist %i , um das zweite Token abzurufen, %j , um das dritte Token abzurufen, und %k , um alle verbleibenden Token abzurufen. Wenn die von Ihnen bereitgestellten Dateinamen Leerzeichen enthalten, verwenden Sie Anführungszeichen um den Text (z. B. Dateiname). Um Anführungszeichen zu verwenden, müssen Sie "usebackq" verwenden. Andernfalls werden die Anführungszeichen als Definition einer literalen Zeichenfolge interpretiert, die analysiert werden soll.
%i wird explizit in der For-Anweisung deklariert. %j und %k werden implizit mithilfe von Tokens= deklariert. Sie können Token= verwenden, um bis zu 26 Token anzugeben, wenn nicht versucht wird, eine Variable höher als der Buchstabe z oder Z zu deklarieren.
Um die Ausgabe eines Befehls zu analysieren, indem Sie den Satz zwischen den Klammern platzieren, geben Sie Folgendes ein:
for /f "usebackq delims==" %i in (`set`) do @echo %i
Um eine rekursive Schleife aller Dateien in einem Verzeichnis auszuführen, einschließlich Unterverzeichnissen und Echo ihres vollständigen Pfads, wann sie zuletzt geändert wurden, und deren Dateigröße geben Sie Folgendes ein:
for /r "C:\My Dir\" %A in (*.*) do echo %~ftzA