web-dev-qa-db-fra.com

Comment faire quelque chose sur chaque fichier d'un répertoire avec un script batch

Comment parcourir chaque fichier d'un répertoire contenant un fichier .bat ou .cmd?

Pour des raisons de simplicité, veuillez fournir une réponse qui répète simplement le nom du fichier ou son chemin.

251
Brian R. Bondy

Utilisation de la ligne de commande:

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

Utilisation du fichier batch:

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

Mise à jour: si le répertoire contient des fichiers avec des espaces dans les noms, vous devez modifier le délimiteur utilisé par la commande for /f. Par exemple, vous pouvez utiliser le caractère de pipe.

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

Mise à jour 2: (rapide un an et demi après la réponse originale :-)) Si le nom du répertoire lui-même a une espace, vous pouvez utiliser l'option usebackq du for:

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

Et si vous devez utiliser la redirection de sortie ou le piping de commande, utilisez le caractère d'échappement (^):

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

Sinon, utilisez:

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

La commande forfiles est disponible dans Windows Vista et versions ultérieures.

97
Paul Houx

Méthode la plus simple:

En ligne de commande, utilisez:

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

À partir d'un fichier de lot (doublez le pourcentage de signes):

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

A partir d'un fichier batch avec un dossier spécifié comme 1er paramètre:

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

Utilisation

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

avec:

  • chemin étant le chemin de départ.
  • %% var étant un identifiant.
  • *. * étant un masque de fichier OR le contenu d'une variable.
  • some_command étant la commande à exécuter avec le chemin et var concaténés en tant que paramètres.
33
mstrobl

Autrement:

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