Hvordan batch endre navn del av filnavnet i Windows Powershell ved hjelp av Regex?

I dette eksempelet, vi har 6 filene nedenfor med dato og filnavnet under:

Mode LastWriteTime Lengde navn
----                -------------         ------ ----
-en----       10/06/2018     12:40              0 1 = 9.8.16 Kontoutskrift 298.67.pdf
-en----       10/06/2018     12:40              0 2 = 9.9.16 Kontoutskrift 134.74.pdf
-en----       10/06/2018     12:41              0 3 = 9.10.16 Kontoutskrift 123.43.pdf
-en----       10/06/2018     12:41              0 4 = 9.11.16 Kontoutskrift 134.54.pdf
-en----       10/06/2018     12:41              0 5 = 9.12.16 Kontoutskrift 157.98.pdf
-en----       10/06/2018     12:41              0 6 = 9.1.17 Kontoutskrift 123.45.pdf

Her, filnavnet inneholder et serie # i begynnelsen, etterfulgt av =, etterfulgt av ‘kontoutskrift’ etterfulgt av slutten av Balanse.

Disse filene er i kortet ditt utsagn faktisk kreditt og ordet ‘Bank’ behov for å bli erstattet av ordene ‘kredittkort’. Resten av filnavnet bør forbli den samme.

For å oppnå dette, Vi skal bruke Windows Kraftskall med Regex.

Å liste opp alle kontoutskrifter, vi bruker ls kommando, Da rør utgangs

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

Rename kommandoen brukes etter at røret for å endre navn på filene. $_ er objektet som holder utgangssignalet før rørledningen, og vi bruker navnet eiendommen av $_ gjenstand. -replace brukes på strenger i Kraftskall, som erstatter en streng med en ny streng. -replace er en funksjon som tar 2 parametere. Den første parameteren er den gamle strengen som vi ønsker å erstatte og andre parameter er den nye strengen.

Fange grupper i Regex lar oss beholde deler av strengen. i Regex, noe satt i parentes er tatt for senere bruk. f.eks. (.+)Bank(.+) fanger opp noe før og etter karakterenes Bank '. Vi kan bruke disse fanget deler, ved bruk av $ og en rekke. Den første parentes fanger inn $1 og andre parentes fanger inn $2 etc…

I første parameter, vi spesifiserer den gamle strengen som vi ønsker å erstatte, og samtidig fanger vi opp de delene av strengen som vi ønsker å beholde (fangst). I andre parameter, den nye strengen bruker den fangede delene som vi ønsker å beholde, så vel som den nye strengen selv f.eks. '$1Credit Card$2'.

Resultat:

Mode LastWrite Tid Lengde Name
----       ---------      ----            ------   ----
-en----     10/06/2018     12:40              0 1 = 9.8.16 Kontoutskrift 298.67.pdf
-en----     10/06/2018     12:40              0 2 = 9.9.16 Kontoutskrift 134.74.pdf
-en----     10/06/2018     12:41              0 3 = 9.10.16 Kontoutskrift 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kontoutskrift 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kontoutskrift 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Kontoutskrift 123.45.pdf

Legg igjen et svar