webentwicklung-frage-antwort-db.com.de

Vorgehensweise zum Bearbeiten jeder Datei in einem Verzeichnis mit einem Stapelskript

Wie durchläuft man jede Datei in einem Verzeichnis mit einer .bat- oder .cmd-Datei?

Geben Sie der Einfachheit halber eine Antwort ein, die nur den Dateinamen oder den Dateipfad wiedergibt.

251
Brian R. Bondy

Befehlszeilenverwendung:

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

Verwendung von Stapeldateien:

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

pdate: Wenn das Verzeichnis Dateien mit Leerzeichen in den Namen enthält, müssen Sie das Trennzeichen for /f Befehl wird verwendet. Sie können beispielsweise das Pipe-Zeichen verwenden.

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

pdate 2: (schnell anderthalb Jahre nach der ursprünglichen Antwort :-)) Wenn der Verzeichnisname selbst ein Leerzeichen enthält, können Sie die Option usebackq auf der for:

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

Und wenn Sie Ausgabeumleitung oder Befehls-Piping verwenden müssen, verwenden Sie das Escape-Zeichen (^):

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

Alternativ verwenden Sie:

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

Der Befehl forfiles ist in Windows Vista und höher verfügbar.

97
Paul Houx

Einfachste Methode:

Verwenden Sie in der Befehlszeile:

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

Aus einer Stapeldatei (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
58
Gordon Bell

Verwenden

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

mit:

  • pfad ist der Startpfad.
  • %% var ist ein Bezeichner.
  • *. * ist eine Dateimaske OR der Inhalt einer Variablen.
  • some_command ist der Befehl, der mit dem Pfad und der als Parameter verketteten Variable ausgeführt werden soll.
33
mstrobl

Ein anderer Weg:

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