Petite explication sur la façon de lister les fichiers d'un dossier dans un fichier bat sous Windows :
Pour lister les fichiers d'un dossier donné, il suffit d'utiliser la commande FOR de la façon suivante :
for %%f in (<un chemin>\*.<ext>) do <une commande>
On récupère le chemin complet (dossier + nom du fichier) du fichier dans la variable %%f.
Cette variable est obligatoirement composée d'une seule lettre.
Le plus simple pour effectuer des traitements sur les fichiers est d'utiliser une fonction pour laquelle on passe le nom du fichier :
Voici un exemple :
for %%f in (C:\temp\*.css) do call :process %%f goto :eof :process SET fichier=%1 echo Fichier : %fichier%
N'oubliez pas le goto :eof à la fin du script sinon il continuera en passant sur les fonctions définies en dessous (qui retournerons au mieux des erreurs pour fichiers introuvables, au pire des résultats inattendus)
Le script affichera des résultats du type
Fichier : C:\temp\styles.css
Si l'on souhaite ne récupérer que le nom du fichier sans le chemin, il suffit d'appeler la ligne suivante :
for %%f in (C:\temp\*.css) do call :process %%~nxf
On utilise les caractères de substitution en faisant précéder la variable par un tilde (~) et l'info à récupérer parmi, entre autre (cf liste complète dans l'aide de FOR (FOR /?)) :
- d : lettre de lecteur
- p : chemin d'accès (hors lettre de lecteur)
- n : nom de fichier (sans l'extension)
- x : extension de fichier (avec le "." initial)
- s : chemin complet avec des noms courts
- a : attributs du fichier
- t : date du fichier
- z : taille du fichier (en octets)
En bref, %%f = %%~dpnxf
Et pour lister les dossiers ?
Rien de plus simple :
for /f %%i In ('dir /b /ad "C:\Windows"') Do ...
Commentaires