Utiliser des fichiers pour traiter des fichiers en fonction de l'âge

Il est toujours bon de connaître certaines techniques magiques en ligne de commande, car il est parfois plus facile de traiter les commandes de cette façon.

Ce guide présente la commande Forfiles dans Windows Vista et Windows 7 (Mise à jour: également disponible dans les versions les plus récentes de Windows).

Forfiles peut traiter des fichiers en fonction de noms, d’extensions de fichiers et d’âge. Il est par exemple possible de rechercher tous les documents d’un répertoire datant de plus de 20 jours ou tous les documents de c: \ documents modifiés depuis une date donnée.

La commande forfiles peut être associée à des options de traitement permettant de supprimer ces fichiers ou de créer une liste de tous les fichiers correspondant aux filtres. Regardons de plus près la commande forfiles.

FORFILES [/ P chemin] [/ M masque de recherche] [/ S] [/ C commande] [/ D [+ | -] jj / mm / aaaa]

Description: Sélectionne un fichier (ou un ensemble de fichiers) et exécute une commande sur ce fichier. Ceci est utile pour les travaux par lots.

Liste de paramètres:

  • / P nom de chemin Indique le chemin pour commencer la recherche. Le dossier par défaut est le répertoire de travail actuel (.).
  • / M searchmask Recherche les fichiers en fonction d'un masque de recherche. Le masque de recherche par défaut est '*'.
  • / S Indique aux fichiers de recurse dans des sous-répertoires. Comme "DIR / S".
  • / C commande Indique la commande à exécuter pour chaque fichier. Les chaînes de commande doivent être placées entre guillemets. La commande par défaut est "cmd / c echo @file".

Les variables suivantes peuvent être utilisées dans la chaîne de commande:

  • @file - renvoie le nom du fichier.
  • @fname - renvoie le nom du fichier sans extension.
  • @ext - renvoie uniquement l'extension du fichier.
  • @path - renvoie le chemin complet du fichier.
  • @relpath - renvoie le chemin relatif du fichier.
  • @isdir - renvoie "TRUE" si un type de fichier est un répertoire et "FALSE" pour les fichiers.
  • @fsize - renvoie la taille du fichier en octets.
  • @fdate - renvoie la date de dernière modification du fichier.
  • @heure - renvoie la dernière heure modifiée du fichier.

Pour inclure des caractères spéciaux dans la ligne de commande, utilisez le code hexadécimal du caractère au format 0xHH (ex. 0x09 pour tab). Les commandes internes CMD.exe doivent être précédées de "cmd / c".

/ D date Sélectionne les fichiers dont la date de dernière modification est supérieure ou égale à (+) ou inférieure ou égale à (-), la date spécifiée au format "jj / mm / aaaa". ou sélectionne les fichiers dont la date de dernière modification est supérieure ou égale à (+) la date du jour plus les jours "jj", ou inférieure ou égale à (-) la date du jour moins les "jours". Un nombre de jours "dd" valide peut être n'importe quel nombre compris entre 0 et 32768. "+" est pris comme signe par défaut s'il n'est pas spécifié.

/? Affiche ce message d'aide. Ce fichier d'aide peut être ouvert en entrant la commande forfiles /? dans une invite de commande. Appuyez sur Windows-R, tapez cmd et appuyez sur Entrée pour lancer la ligne de commande sous Windows.

La commande forfiles /P c:\test\ /M .doc /S /D -10 recherche dans le répertoire c: \ test et tous ses sous-répertoires les fichiers portant l'extension .doc datant de plus de 10 jours.

Le paramètre / p suivi d'un répertoire définit le répertoire de départ, / s inclut des sous-répertoires dans la recherche, / m filtre les fichiers et les dossiers en fonction de la chaîne entrée et / D définit la date ou une période.

La commande / C est utilisée pour traiter les fichiers qui se trouvent plus loin. Il peut par exemple être utilisé pour exécuter la commande suivante: /C "cmd /c echo @fname" > test.txt les noms de chaque fichier trouvé et enregistre les résultats dans text.txt dans le même répertoire.

La commande complète ressemble alors à ceci pour les forfiles /P c:\test\ /M .doc /S /D -10 /C "cmd /c echo @fname" > test.txt

Une autre possibilité consiste à supprimer les fichiers correspondant à la recherche, à l’aide de la commande /C "cmd /c del @File

Il est toutefois recommandé de tester d'abord la sortie avant d'émettre la commande delete pour s'assurer que seuls les bons fichiers sont supprimés. Les utilisateurs expérimentés peuvent créer un fichier de commandes pour exécuter régulièrement des fichiers forfiles.