Wie iteriert man über jede Datei in einem Verzeichnis mit einer .bat- oder .cmd-Datei?
Geben Sie der Einfachheit halber eine Antwort an, die nur den Dateinamen oder den Dateipfad wiedergibt.
Wie iteriert man über jede Datei in einem Verzeichnis mit einer .bat- oder .cmd-Datei?
Geben Sie der Einfachheit halber eine Antwort an, die nur den Dateinamen oder den Dateipfad wiedergibt.
Antworten:
Befehlszeilenverwendung:
for /f %f in ('dir /b c:\') do echo %f
Verwendung von Batchdateien:
for /f %%f in ('dir /b c:\') do echo %%f
Update : Wenn das Verzeichnis Dateien mit Leerzeichen in den Namen enthält, müssen Sie das vom for /f
Befehl verwendete Trennzeichen ändern . Sie können beispielsweise das Pipe-Zeichen verwenden.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Update 2 : (schnell anderthalb Jahre nach der ursprünglichen Antwort :-)) Wenn der Verzeichnisname selbst ein Leerzeichen im Namen enthält, können Sie die usebackq
Option auf for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
Wenn Sie die Ausgabeumleitung oder die Befehlsleitung verwenden müssen, verwenden Sie das Escapezeichen char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
nach dem benötigt for
? Gemäß den Hilfedokumenten wird das /f
Flag geöffnet und jede Datei gelesen. Wird das benötigt, um Dateien zu wiederholen oder umzubenennen?
/f
After FOR
beschränkt es auf Dateien. In ähnlicher Weise /d
einengt auf Verzeichnisse (Ordner) und /r
instruiert es rekursiv sein.
'dir /b "c:\program files"'
`dir /b "c:\program files"`
Alternativ können Sie Folgendes verwenden:
forfiles /s /m *.png /c "cmd /c echo @path"
Der Befehl forfiles ist in Windows Vista und höher verfügbar.
Einfachste Methode:
Verwenden Sie in der Befehlszeile:
for %f in (*.*) do echo %f
Aus einer Batch-Datei (verdoppeln Sie die Prozentzeichen):
for %%f in (*.*) do echo %%f
Aus einer Batch-Datei mit dem als 1. Parameter angegebenen Ordner:
for %%f in (%1\*.*) do echo %%f
dir /B
Ausgabe mit for
.
Verwenden
for /r path %%var in (*.*) do some_command %%var
mit:
%%var was unexpected at this time.
Können Sie ein genaues Beispiel geben? Ich habe eine Reihe von Variationen vonfor /r . %%var in (*.*) do echo %%var
Ein anderer Weg:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
steht für den Namen der Datei ohne Erweiterung, wobei f
der Name der teilweise angegebenen Variablen ist for
. Docs: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…