Frage

Wie iterieren Sie über jede Datei in einem Verzeichnis mit einer .bat oder .cmd-Datei?

Der Einfachheit halber geben Sie bitte eine Antwort, die den Dateinamen oder Dateipfad nur Echos.

War es hilfreich?

Lösung

Kommandozeilen-Nutzung:

for /f %f in ('dir /b c:\') do echo %f

Batch-Datei Nutzung:

for /f %%f in ('dir /b c:\') do echo %%f

Aktualisieren : Wenn die Verzeichnisdateien mit Platz in dem Namen enthalten, müssen Sie das Trennzeichen des for /f Befehl ändern verwendet. zum Beispiel, können Sie die Pipezeichen verwenden.

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f

Update 2 : (quick ein Jahr und eine Hälfte nach der ursprünglichen Antwort :-)) Wenn der Verzeichnisname selbst ein Leerzeichen im Namen hat, können Sie die usebackq Option auf dem for verwenden:

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f

Und wenn Sie die Umleitung der Ausgabe oder Befehlsleitungen verwenden müssen, verwenden Sie die Escape char (^):

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f

Andere Tipps

Alternativ können Sie:

forfiles /s /m *.png /c "cmd /c echo @path"

Der forfiles Befehl in Windows Vista verfügbar ist und oben.

Einfachste Methode:

über die Befehlszeile verwenden:

for %f in (*.*) do echo %f

Von einer Batch-Datei (das Doppelte des% Prozentzeichen auf):

for %%f in (*.*) do echo %%f

Von einer Batch-Datei mit Ordner als erster Parameter angegeben:

for %%f in (%1\*.*) do echo %%f

Mit

for /r path %%var in (*.*) do some_command %%var

mit:

  • Pfad ist der Ausgangspfad.
  • %% var wobei einige Bezeichner.
  • *. * Ist ein filemask oder den Inhalt einer Variablen.
  • some_command wobei der Befehl mit dem Pfad und var verketteten als Parameter auszuführen.

Eine andere Möglichkeit:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"

Ich hatte einige Malware, die alle Dateien in einem Verzeichnis als verstecktes / System markiert / Read-only. Wenn jemand findet sich sonst in dieser Situation cd in das Verzeichnis, und führen Sie for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top