Comment itérer sur chaque fichier d'un répertoire avec un fichier .bat ou .cmd?
Pour plus de simplicité, veuillez fournir une réponse qui fait simplement écho au nom de fichier ou au chemin d'accès au fichier.
Comment itérer sur chaque fichier d'un répertoire avec un fichier .bat ou .cmd?
Pour plus de simplicité, veuillez fournir une réponse qui fait simplement écho au nom de fichier ou au chemin d'accès au fichier.
Réponses:
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 de l'espace dans les noms, vous devez changer le délimiteur que la for /f
commande utilise. par exemple, vous pouvez utiliser le caractère de tuyau.
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 un espace dans le nom, vous pouvez utiliser l' usebackq
option sur 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 la tuyauterie de commande, utilisez le caractère d'échappement char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
nécessaire après le for
? Selon les documents d'aide, l' /f
indicateur s'ouvre et lit chaque fichier. Est-ce nécessaire pour faire écho ou renommer des fichiers?
/f
après le FOR
restreint aux fichiers. De même, se /d
limite aux répertoires (dossiers) et lui /r
demande d'être récursif.
'dir /b "c:\program files"'
cela devrait être`dir /b "c:\program files"`
Vous pouvez également utiliser:
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:
Depuis la ligne de commande, utilisez:
for %f in (*.*) do echo %f
À partir d'un fichier batch (doublez les signes% pourcent):
for %%f in (*.*) do echo %%f
A partir d'un fichier batch avec dossier spécifié comme 1er paramètre:
for %%f in (%1\*.*) do echo %%f
dir /B
sortie avec for
.
Utilisation
for /r path %%var in (*.*) do some_command %%var
avec:
%%var was unexpected at this time.
pouvez-vous donner un exemple exact? J'ai essayé un tas de variations defor /r . %%var in (*.*) do echo %%var
Autrement:
for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"
"%~nf"
représente le nom du fichier sans extension, où f
est le nom de la variable spécifiée en for
partie. Docs: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…