Suche…


Syntax

  • für / l %% p in (Startnummer, Inkrement, Endnummer) do-Befehl
  • für / f %% p in (Dateiname) do Befehl
  • for / f %% p in ("textStrings") do-Befehl
  • für / f %% p in ('command') do-Befehl
  • für / r Laufwerk: \ Pfad %% p in (set) do Befehl
  • für / d %% p in (Verzeichnis) do Befehl

Bemerkungen

Der Befehl for akzeptiert Optionen, wenn das Flag /f verwendet wird. Hier ist eine Liste von Optionen, die verwendet werden können:

  • delims=x , um Token zu trennen

  • skip=n Anzahl der Zeilen, die am Anfang von Datei- und Textzeichenfolgen übersprungen werden

  • eol=; Zeichen am Anfang jeder Zeile, um einen Kommentar anzugeben

  • tokens=n Nummerierte Elemente, die aus jeder zu verarbeitenden Zeile oder Zeichenfolge gelesen werden sollen

  • usebackq Verwenden Sie einen anderen usebackq :

    Verwenden Sie doppelte Anführungszeichen für lange Dateinamen in "Dateien".

    Verwenden Sie einfache Anführungszeichen für 'textStrings'.

    Verwenden Sie wieder Anführungszeichen für `command`

Durchlaufen jeder Zeile in einem Dateisatz

Im Folgenden wird jede Zeile in der Datei C:\scripts\testFile.txt . Leere Zeilen werden nicht verarbeitet.

for /F "tokens=*" %%A in (C:\scripts\testFile.txt) do (
  echo %%A
  rem do other stuff here
  )

Ein fortschrittlicheres Beispiel zeigt, wie die in FOR-Schleife aus einem Datensatz mit eingeschränkten Dateien abgeleiteten Daten verwendet werden können, um die Batch-Ausführung umzuleiten und gleichzeitig den gesuchten Inhalt in einer Datei zu speichern:

@echo off
setlocal enabledelayedexpansion

for /f %%i in ('dir "%temp%\test*.log" /o:-d /t:w /b') do (
    set "last=%temp%\%%i"
    type !last! | find /n /i "Completed" >nul 2>&1 >> %temp%\Completed.log ^
     && (echo Found in log %%i & goto :end) || (echo Not found in log %%i & set "result=1"))

:: add user tasks code here
if defined result echo Performing user tasks...

:end    
echo All tasks completed
exit /b

Beachten Sie, wie lange Befehlszeichenfolgen in mehrere Codezeilen aufgeteilt werden und Befehlsgruppen durch Klammern getrennt werden.

Besuche rekursiv Verzeichnisse in einer Verzeichnisstruktur

for /r Befehl for /r kann verwendet werden, um rekursiv alle Verzeichnisse in einer Verzeichnisstruktur aufzurufen und einen Befehl auszuführen.

@echo off
rem start at the top of the tree to visit and loop though each directory
for /r %%a in (.) do (
  rem enter the directory
  pushd %%a
  echo In directory:
  cd
  rem leave the directory
  popd
  )

Anmerkungen:

  • for / r - Durchlaufen von Dateien (Unterordner Recurse).
  • pushd - Ändert das aktuelle Verzeichnis / den Ordner und speichert den vorherigen Ordner / Pfad zur Verwendung durch den POPD-Befehl.
  • popd - Wechseln Sie in das Verzeichnis, das zuletzt vom Befehl PUSHD gespeichert wurde.

Alle Dateien im aktuellen Verzeichnis umbenennen

Im Folgenden wird eine Variable mit einer for Schleife verwendet, um eine Gruppe von Dateien umzubenennen.

SetLocal EnableDelayedExpansion

for %%j in (*.*) do (
  set filename=%%~nj
  set filename=!filename:old=new!
  set filename=Prefix !filename!
  set filename=!filename! Suffix
  ren "%%j" "!filename!%%~xj"
  )

Indem Sie den Variablennamen %%j und ihn allen aktuellen Dateien (*.*) %%j , können wir die Variable in einer for Schleife verwenden, um jede Datei im aktuellen Verzeichnis darzustellen.

Bei jedem Durchlauf (oder Durchlauf) der Schleife wird dabei eine andere Datei als die definierte Gruppe verarbeitet (die ebenfalls eine beliebige Gruppe sein könnte, z. B. *.jpg oder *.txt ).

Im ersten Beispiel ersetzen wir Text: Die Textzeichenfolge "old" wird durch die Textzeichenfolge "new" ersetzt (wenn, jedoch nur, wenn im Dateinamen der Text "old" enthalten ist).

Im zweiten Beispiel fügen wir Text hinzu: Der Text "Prefix" wird am Anfang des Dateinamens eingefügt. Dies ist kein Ersatz. Diese Änderung wird auf alle Dateien in der Gruppe angewendet.

Im dritten Beispiel fügen wir erneut Text hinzu: Der Text "Suffix" wird am Ende des Dateinamens hinzugefügt. Auch dies ist keine Substitution. Diese Änderung wird auf alle Dateien in der Gruppe angewendet.

Die letzte Zeile übernimmt eigentlich die Umbenennung.

Iteration

for /L %%A in (1,2,40) do echo %%A

Diese Zeile wird von 1 bis 39 iteriert und jedes Mal um 2 erhöht.

Der erste Parameter, 1 , ist die Startnummer.

Der zweite Parameter, 2 , ist das Inkrement.

Der dritte Parameter, 40 , ist der Maximalwert.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow