Comment renommer par lot une partie du nom de fichier dans Windows PowerShell à l'aide Regex?

Dans cet exemple,, nous avons 6 fichiers ci-dessous avec la date et le nom de fichier ci-dessous:

Mode LastWriteTime Nom Longueur
----                -------------         ------ ----
-une----       10/06/2018     12:40              0 1 = 9.8.16 Déclaration de la Banque 298.67.pdf
-une----       10/06/2018     12:40              0 2 = 9.9.16 Déclaration de la Banque 134.74.pdf
-une----       10/06/2018     12:41              0 3 = 9.10.16 Déclaration de la Banque 123.43.pdf
-une----       10/06/2018     12:41              0 4 = 9.11.16 Déclaration de la Banque 134.54.pdf
-une----       10/06/2018     12:41              0 5 = 9.12.16 Déclaration de la Banque 157.98.pdf
-une----       10/06/2018     12:41              0 6 = 9.1.17 Déclaration de la Banque 123.45.pdf

Ici, le nom de fichier contient une série # au début, suivi par =, suivi de « Déclaration de la Banque’ suivi d'ici la fin de l'équilibre des états.

Ces fichiers sont en fait des relevés de carte de crédit et le mot « Banque’ doit être remplacée par les mots carte de crédit '. Tout le reste du nom du fichier doit rester le même.

Pour y parvenir, nous utiliserons Fenêtres PowerShell avec Regex.

Pour répertorier tous les relevés bancaires, nous utilisons le ls commander, puis canaliser la sortie

ls | s -newname {$_.name -replace('(.+)Banque(.+)','$ 1Credit Carte $ 2')}

La commande de changement de nom est utilisé après la conduite de renommer les fichiers. $_ est l'objet qui maintient la sortie avant que le tuyau, et nous utilisons la propriété du nom $_ objet. -replace est utilisé sur les chaînes en PowerShell, qui remplace une chaîne avec une nouvelle chaîne. -replace est une fonction qui prend 2 paramètres. Le 1er paramètre est la chaîne ancienne que nous voulons remplacer et le 2ème paramètre est la nouvelle chaîne.

La capture des groupes dans Regex nous permet de garder les pièces de la chaîne. en Regex, quoi que ce soit mis entre parenthèses est capturé pour une utilisation ultérieure. par exemple,. (.+)Bank(.+) capture quoi que ce soit avant et après la Banque »les personnages. Nous pouvons utiliser ces pièces capturées, en utilisant $ et un certain nombre. La 1ère parenthèse capture dans $1 et la 2ème parenthèse capture dans $2 etc…

Dans le 1er paramètre, nous précisons la vieille chaîne que nous voulons remplacer, et en même temps, nous capturons les parties de la chaîne que nous voulons garder (Capturer). Dans le 2ème paramètre, la nouvelle chaîne utilise les pièces saisies que nous voulons garder, ainsi que la nouvelle chaîne elle-même, par exemple. '$1Credit Card$2'.

Résultat:

Mode LastWrite Temps Nom Longueur
----       ---------      ----            ------   ----
-une----     10/06/2018     12:40              0 1 = 9.8.16 Carte de crédit Déclaration 298.67.pdf
-une----     10/06/2018     12:40              0 2 = 9.9.16 Carte de crédit Déclaration 134.74.pdf
-une----     10/06/2018     12:41              0 3 = 9.10.16 Carte de crédit Déclaration 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Carte de crédit Déclaration 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Carte de crédit Déclaration 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Carte de crédit Déclaration 123.45.pdf

Laisser un commentaire