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 /fcommande 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' usebackqoption 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
/fnécessaire après le for? Selon les documents d'aide, l' /findicateur s'ouvre et lit chaque fichier. Est-ce nécessaire pour faire écho ou renommer des fichiers?
/faprès le FORrestreint aux fichiers. De même, se /dlimite aux répertoires (dossiers) et lui /rdemande 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 /Bsortie 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ù fest le nom de la variable spécifiée en forpartie. Docs: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…