für

Führt einen angegebenen Befehl für jede Datei in einer Reihe von Dateien aus.

Syntax

for {%% | %}<variable> in (<set>) do <command> [<commandlineoptions>]

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. Variablen sind groß- und kleinschreibungsempfindlich, und sie müssen mit einem alphabetischen Wert wie %a, %b oder %c dargestellt werden.
(<set>) Erforderlich. Gibt eine oder mehrere Dateien, Verzeichnisse oder Textzeichenfolgen oder einen Wertebereich an, auf dem 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 eine Textzeichenfolge oder für den im Satz enthaltenen Wertebereich ausführen möchten.
<commandlineoptions> Gibt alle Befehlszeilenoptionen an, die Sie mit dem angegebenen Befehl verwenden möchten.
/? Zeigt die Hilfe an der Eingabeaufforderung an.

Hinweise

  • Sie können diesen Befehl in einer Batchdatei oder direkt aus der 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 können maximal 52 gleichzeitig aktiv sein.

    • Um Verwirrung mit den Batchparametern zu vermeiden, können Sie jedes Zeichen für Variable verwenden, %0%9mit Ausnahme der Zahlen 0 bis 9. Bei einfachen Batchdateien funktioniert ein einzelnes Zeichen, z %%f . B.

    • Sie können mehrere Werte für die Variable in komplexen Batchdateien verwenden, um verschiedene austauschbare Variablen zu unterscheiden.

  • Der Setparameter kann eine einzelne Gruppe von Dateien oder mehrere Gruppen von Dateien darstellen. Sie können Wildcardzeichen (* und ?) verwenden, um einen Dateisatz anzugeben. Nachfolgend sind gültige Dateisätze aufgeführt:

    (*.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 Set 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 auslassen, wird eine Fehlermeldung angezeigt.

  • Wenn Befehlserweiterungen aktiviert sind (das ist die Standardeinstellung ), werden die folgenden zusätzlichen Formen unterstützt:

    • Nur Verzeichnisse: Wenn der Satz Wildcardzeichen (* oder ?) enthält, wird der angegebene Befehl für jedes Verzeichnis (anstelle einer Gruppe von Dateien in einem angegebenen Verzeichnis) ausgeführt, die dem Satz entspricht. Die Syntax ist:

      for /d {%%|%}<Variable> in (<Set>) do <Command> [<CommandLineOptions>]
      
    • Rekursiv: Führt die Verzeichnisstruktur aus, die unter drive:path verankert 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 es sich nur um einen einzelnen Punkt (.) handelt, werden nur die Verzeichnisstruktur aufgezählt. Die Syntax ist:

      for /r [[<drive>:]<path>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      
    • 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 (End#) ü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 das Ende überschreitet, beendet die Befehlsshell die Schleife. Sie können auch einen negativen Schritt# verwenden, um einen Bereich in verringerten 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 ist:

      for /l {%%|%}<variable> in (<start#>,<step#>,<end#>) do <command> [<commandlinepptions>]
      
    • Iterieren und Dateianalyse: Verwenden Sie die Dateianalyse, um die 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üsseloptionen , 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, untersucht /f nur das erste Token.

      Die Dateianalyse besteht aus dem Lesen der Ausgabe-, Zeichenfolgen- oder Dateiinhalte, und dann wird sie in einzelne Textzeilen unterteilt und jede Zeile in Null oder mehr Token analysiert. Die For-Schleife wird dann mit dem iterativen Variablenwert aufgerufen, der auf das Token festgelegt ist. Standardmäßig übergibt /f das erste leere getrennte Token aus jeder Zeile jeder Datei. Leere Zeilen werden übersprungen.

      Die Syntaxen sind:

      for /f [<parsingkeywords>] {%%|%}<variable> in (<set>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in (<literalstring>) do <command> [<commandlinepptions>]
      for /f [<parsingkeywords>] {%%|%}<variable> in ('<command>') do <command> [<commandlinepptions>]
      

      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 Standardmäßige Analyseverhalten außer Kraft zu setzen, geben Sie parsingkeywords an. Dies ist eine an zitierte 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> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in ('<LiteralString>') do <command> [<commandlinepptions>]
      for /f [usebackq <parsingkeywords>] {%%|%}<variable> in (`<command>`) do <command> [<commandlinepptions>]
      

      In der folgenden Tabelle sind die Analysestichwörter aufgeführt, die Sie für die Analyse von Schlüsselwörtern verwenden können.

      Stichwort BESCHREIBUNG
      eol=<c> Gibt ein Ende des Zeilenzeichens an (nur ein Zeichen).
      skip=<n> Gibt die Anzahl der Zeilen an, die am Anfang der Datei übersprungen werden sollen.
      delims=<xxx> Gibt einen Trennzeichensatz an. Dadurch wird der Standardmäßige Trennzeichensatz des Leerzeichens und der Registerkarte ersetzt.
      token=<x,y,m–n> Gibt an, welche Token von jeder Zeile an die For-Schleife für jede Iteration übergeben werden sollen. Daher werden zusätzliche Variablennamen zugewiesen. m-n gibt einen Bereich von mbis nth-Tokenan. Wenn das letzte Zeichen in der Token= Zeichenfolge ein Sternchen (*) ist, wird eine zusätzliche Variable zugewiesen und empfängt den verbleibenden Text in der Zeile nach dem letzten analysierten Token.
      usebackq Gibt an, dass eine zurück zitierte Zeichenfolge als Befehl ausgeführt wird, eine Zeichenfolge mit einer einzelnen Anführungszeichen als Literalzeichenfolge oder für lange Dateinamen, die Leerzeichen enthalten, Dateinamen zulassen <set>, jede in Doppelte Anführungszeichen eingeschlossen werden soll.
    • Variable Ersetzung: 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 sich auf einen vollqualifizierten %I Pfadnamen.
      %~dI Wird %I nur auf einen Laufwerkbuchstaben erweitert.
      %~pI Wird %I nur auf einen Pfad erweitert.
      %~nI %I Wird nur auf einen Dateinamen erweitert.
      %~xI Wird %I nur auf eine Dateinamenerweiterung erweitert.
      %~sI Erweitert den Pfad, um nur kurze Namen zu enthalten.
      %~aI %I Erweitert die Dateiattribute der Datei.
      %~tI %I Wird auf das Datum und die Uhrzeit der Datei erweitert.
      %~zI %I Wird auf die Größe der Datei erweitert.
      %~$PATH:I Durchsucht die verzeichnisse, die in der PATH-Umgebungsvariable aufgeführt sind, und erweitert sich auf den vollqualifizierten Namen des ersten Gefundenen Verzeichnisses %I . Wenn der Name der Umgebungsvariable nicht definiert ist oder die Datei nicht durch die Suche gefunden wird, wird dieser Modifizierer auf die leere Zeichenfolge erweitert.

      In der folgenden Tabelle sind Modifiziererkombinationen aufgeführt, mit denen Sie zusammengesetzte Ergebnisse abrufen können.

      Variable mit kombinierten Modifizierern BESCHREIBUNG
      %~dpI Erweitert %I sich nur auf einen Laufwerkbuchstaben und pfad.
      %~nxI %I Wird nur auf einen Dateinamen und eine Erweiterung erweitert.
      %~fsI Erweitert sich nur auf einen vollständigen %I Pfadnamen mit kurzen Namen.
      %~dp$PATH:I Durchsucht die Verzeichnisse, die in der PATH-Umgebungsvariable %I aufgeführt sind, und erweitert den Laufwerkbuchstaben und den Pfad des ersten gefundenen Laufwerks.
      %~ftzaI %I Erweitert sich auf eine Ausgabelinie, die wie dir ist.

      In den obigen Beispielen können Sie DEN PFAD durch andere gültige Werte ersetzen %I . Ein gültiger Variablenname endet die %~ Syntax.

      Mithilfe von Großbuchstabenvariablennamen wie %Iz. B. können Sie Ihren Code besser lesbar machen und Verwirrung mit den Modifizierern vermeiden, die nicht groß und kleinschreibungsempfindlich sind.

  • Analysieren einer Zeichenfolge: Sie können die for /f Analyselogik in einer unmittelbaren Zeichenfolge verwenden, indem <literalstring> Sie entweder in: Doppelte Anführungszeichen (ohne usebackq) oder in einzelnen Anführungszeichen (mit usebackq) (z. B. MyString) oder ('MyString') oder ('MyString') einfügen. <literalstring> wird als einzelne Eingabezeile einer Datei behandelt. <literalstring> Bei der Analyse in Doppelführungszeichen 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 back-quoted <command> zwischen den Klammern platzieren. Es wird als Befehlszeile behandelt, die an ein untergeordnetes Cmd.exe übergeben wird. Die Ausgabe wird in den Arbeitsspeicher aufgenommen und analysiert, als ob es sich um eine Datei handelt.

Beispiele

Verwenden Sie zum Verwenden in einer Batchdatei die folgende Syntax:

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Um den Inhalt aller Dateien im aktuellen Verzeichnis anzuzeigen, die über die Erweiterung .doc oder .txt verfügen, indem Sie die ersetzende Variable %f verwenden, geben Sie folgendes ein:

for %f in (*.doc *.txt) do type %f

Im vorherigen Beispiel wird jede Datei, die über die .doc oder .txt Erweiterung im aktuellen Verzeichnis verfügt, für die %f-Variable 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, ignorieren Sie kommentierte Zeilen, geben Sie Folgendes ein:

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 Text übergeben (Token werden durch Kommas oder Leerzeichen getrennt). Der Textkörper der Anweisung verweist auf %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. Dateinamen). Um Anführungszeichen zu verwenden, müssen Sie usebackq verwenden. Andernfalls werden die Anführungszeichen als Definition einer Literalzeichenfolge interpretiert, um zu analysieren.

%i wird explizit in der For-Anweisung deklariert. %j und %k werden implizit mithilfe von Token=deklariert. Sie können Token= verwenden, um bis zu 26 Token anzugeben, sofern es keinen Versuch verursacht, eine Variable höher als der Buchstaben 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

Weitere Verweise