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.
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
Sinon, utilisez:
forfiles /s /m *.png /c "cmd /c echo @path"
La commande forfiles est disponible dans Windows Vista et versions ultérieures.
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
Utilisation
for /r path %%var in (*.*) do some_command %%var
avec:
Autrement:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"