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.
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 lefor
? 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 leFOR
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:
La commande forfiles est disponible dans Windows Vista et versions ultérieures.
la source
Méthode la plus simple:
Depuis la ligne de commande, utilisez:
À partir d'un fichier batch (doublez les signes% pourcent):
A partir d'un fichier batch avec dossier spécifié comme 1er paramètre:
la source
dir /B
sortie avecfor
.Utilisation
avec:
la source
%%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:
la source
"%~nf"
représente le nom du fichier sans extension, oùf
est le nom de la variable spécifiée enfor
partie. Docs: docs.microsoft.com/en-us/previous-versions/windows/it-pro/…J'ai eu un malware qui a marqué tous les fichiers d'un répertoire comme caché / système / en lecture seule. Si quelqu'un d'autre se retrouve dans cette situation, cd dans le répertoire et exécutez
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.la source