Com canviar el nom de lot part del nom de fitxer al Windows PowerShell usant expressions regulars?

En aquest exemple, tenim 6 arxius següents amb la data i el nom de sota:

Mode LastWriteTime Nom Longitud
----                -------------         ------ ----
-a ----       10/06/2018     12:40              0 1 = 9.8.16 Informe de compte 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Informe de compte 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Informe de compte 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Informe de compte 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Informe de compte 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Informe de compte 123.45.pdf

aquí, el nom de fitxer conté una sèrie # al principi, seguida d'=, seguit de 'Estat de compte bancari’ seguit pel final del saldo del compte.

Aquests arxius estan en Extractes de la targeta de crèdit i de fet la paraula 'Banc’ necessita ser reemplaçada per les paraules 'targeta de crèdit'. Tota la resta del nom de fitxer ha de ser el mateix.

Per tal d'assolir aquest, we will be using Finestres PowerShell with Regex.

Per a una llista de tots els estats de compte bancaris, fem servir la ls comandament, llavors canalitzar la sortida

ls | -newname ren {$_.name -replace('(.+)Banc(.+)','$ 1Credit targeta de $ 2')}

La comanda de canvi de nom s'utilitza després de la canonada per canviar el nom dels arxius. $_ és l'objecte que manté la sortida abans que el tub de, i estem utilitzant la propietat del nom de la $_ objecte. -replace is used on strings in PowerShell, que substitueix una cadena amb una nova cadena. -replace és una funció que pren 2 paràmetres. El primer és el paràmetre d'edat cadena que volem reemplaçar i el segon paràmetre és la nova cadena.

La captura dels grups d'expressions regulars ens permet mantenir parts de la cadena. en expressions regulars, res ja entre parèntesis és capturat per al seu ús posterior. per exemple,. (.+)Bank(.+) capta res abans i després dels caràcters 'Banc'. Podem fer servir aquestes peces capturades, mitjançant l'ús de $ i un nombre. La primera captura en parèntesi $1 i el segon parèntesi de captura en $2 etc.…

En el primer de paràmetres, especifiquem la vella cadena que volem substituir, i, al mateix temps que la captura de les parts de la cadena que volem mantenir (captura). En el segon paràmetre, la nova cadena utilitza les peces capturades que volem mantenir, així com la nova cadena en si, per exemple. '$1Credit Card$2'.

resultat:

Mode LastWrite Temps Nom Longitud
----       ---------      ----            ------   ----
-a ----     10/06/2018     12:40              0 1 = 9.8.16 Declaració de la targeta de crèdit 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Declaració de la targeta de crèdit 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Declaració de la targeta de crèdit -a --- 123.43.pdf-     10/06/2018     12:41              0 4 = 9.11.16 Declaració de la targeta de crèdit -a --- 134.54.pdf-     10/06/2018     12:41              0 5 = 9.12.16 Declaració de la targeta de crèdit -a --- 157.98.pdf-     10/06/2018     12:41              0 6 = 9.1.17 Declaració de la targeta de crèdit 123.45.pdf

Deixa un comentari