forfiles

Sélectionne et exécute une commande sur un fichier ou un ensemble de fichiers. Cette commande est généralement utilisée dans les fichiers batch.

Syntaxe

forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]

Paramètres

Paramètre Description
/P <pathname> Spécifie le chemin d’accès à partir duquel démarrer la recherche. Par défaut, la recherche commence dans le répertoire de travail actuel.
/M <searchmask> Recherche les fichiers en fonction du masque de recherche spécifié. Le masque de recherche par défaut est *.
/S Indique à la commande forfiles d’effectuer une recherche récursive dans les sous-répertoires.
/C <command> Exécute la commande spécifiée sur chaque fichier. Les chaînes de commande doivent être encapsulées entre guillemets doubles. Le a commande par défaut est "cmd /c echo @file".
/D [{+\|-}][{<date> | <days>}] Sélectionne les fichiers avec une date de dernière modification dans la période spécifiée :
  • Sélectionne les fichiers dont la date de dernière modification est postérieure ou égale à (+) ou antérieure ou égale à (-) la date spécifiée, où date est au format MM/JJ/AAAA.
  • Sélectionne les fichiers dont la date de dernière modification est supérieure ou égale à (+) la date actuelle plus le nombre de jours spécifié, ou antérieure ou égale à (-) la date actuelle moins le nombre de jours spécifié.
  • Les valeurs valides pour days incluent tout nombre compris entre 0 et 32 768. Si aucun signe n’est spécifié, + est utilisé par défaut.
/? Affiche le texte d’aide dans la fenêtre cmd.

Notes

  • La commande forfiles /S est similaire à dir /S.

  • Vous pouvez utiliser les variables suivantes dans la chaîne de commande comme spécifié par l’option de ligne de commande /C :

    Variable Description
    @FILE Nom du fichier.
    @FNAME Nom de fichier sans extension.
    @EXT Extension de nom de fichier.
    @PATH Chemin d’accès complet du fichier.
    @RELPATH Chemin d’accès relatif du fichier.
    @ISDIR Prend la valeur TRUE si un type de fichier est un répertoire. Sinon, cette variable prend la valeur FALSE.
    @FSIZE Taille du fichier, en octets.
    @FDATE Timestamp de la dernière modification sur le fichier.
    @FTIME Timestamp de la dernière modification sur le fichier.
  • La commande forfiles vous permet d’exécuter une commande sur ou de transmettre des arguments à plusieurs fichiers. Par exemple, vous pouvez exécuter la commande type sur tous les fichiers d’une arborescence avec l’extension de nom de fichier .txt. Vous pouvez également exécuter chaque fichier de commandes (*.bat) sur le lecteur C, avec le nom de fichier Myinput.txt comme premier argument.

  • Cette commande peut :

    • Sélectionner les fichiers selon une date absolue ou une date relative à l’aide du paramètre /d.

    • Créer une arborescence d’archive de fichiers à l’aide de variables comme @FSIZE et @FDATE.

    • Différencier les fichiers des répertoires à l’aide de la variable @ISDIR.

    • Inclure des caractères spéciaux dans la ligne de commande en utilisant le code hexadécimal du caractère, au format 0xHH (par exemple, 0x09 pour un onglet).

  • Cette commande fonctionne en implémentant l’indicateur recurse subdirectories sur les outils conçus pour traiter un seul fichier.

Exemples

Pour répertorier tous les fichiers batch sur le lecteur C, tapez :

forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"

Pour répertorier tous les répertoires sur le lecteur C, tapez :

forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"

Pour répertorier tous les fichiers du répertoire actif qui datent d’au moins un an, tapez :

forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."

Pour afficher le texte « file is outdated » pour chacun des fichiers du répertoire actif antérieurs au 1er janvier 2007, tapez :

forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."

Pour répertorier les extensions de nom de fichier de tous les fichiers du répertoire actif au format de colonne et ajouter un onglet avant l’extension, tapez :

forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"