Sådan batch omdøbe en del af filnavnet i Windows PowerShell ved hjælp Regex?

I dette eksempel, vi har 6 filerne nedenfor med dato og filnavnet nedenfor:

Tilstand LastWriteTime Længde Navn
----                -------------         ------ ----
-en----       10/06/2018     12:40              0 1 = 9.8.16 Bank Statement 298.67.pdf
-en----       10/06/2018     12:40              0 2 = 9.9.16 Bank Statement 134.74.pdf
-en----       10/06/2018     12:41              0 3 = 9.10.16 Bank Statement 123.43.pdf
-en----       10/06/2018     12:41              0 4 = 9.11.16 Bank Statement 134.54.pdf
-en----       10/06/2018     12:41              0 5 = 9.12.16 Bank Statement 157.98.pdf
-en----       10/06/2018     12:41              0 6 = 9.1.17 Bank Statement 123.45.pdf

Her, filnavnet indeholder en seriel # i begyndelsen, efterfulgt af =, efterfulgt af ’Bank Statement’ efterfulgt af i slutningen af ​​erklæringen balance.

Disse filer er i virkeligheden kreditkortoplysninger og ordet ’Bank’ behov for at blive erstattet af ordene ’Kreditkort’. Alle resten af ​​filnavnet bør forblive den samme.

For at opnå dette, vi vil bruge Windows PowerShell med Regex.

For at nævne alle de kontoudtog, vi bruger ls kommando, derefter rør outputtet

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

Kommandoen Omdøb anvendes efter røret for at omdøbe filerne. $_ er formålet, der holder produktionen før røret, og vi bruger navnet ejendom $_ objekt. -replace bruges på strenge i PowerShell, som erstatter en streng med en ny streng. -replace er en funktion, der tager 2 parametre. Den 1. parameter er den gamle streng, vi ønsker at erstatte og 2. parameter er den nye snor.

Optagelse af grupper i Regex tillader os at holde dele af strengen. I Regex, noget sat i parentes er fanget til at bruge senere. fx. (.+)Bank(.+) indfanger noget før og efter tegnene ’Bank’. Vi kan bruge disse tilfangetagne dele, ved hjælp af $ og et antal. Den 1. parentes fanger ind $1 og 2. parentes fanger ind $2 etc…

I 1. parameter, vi angive den gamle streng, som vi ønsker at erstatte, og på samme tid, vi fange de dele af strengen, som vi ønsker at beholde (fange). I 2. parameter, den nye snor bruger tilfangetagne dele, vi vil beholde, samt den nye snor sig fx. '$1Credit Card$2'.

Resultat:

Tilstand LastWrite Time Længde Navn
----       ---------      ----            ------   ----
-en----     10/06/2018     12:40              0 1 = 9.8.16 Kreditkort Statement 298.67.pdf
-en----     10/06/2018     12:40              0 2 = 9.9.16 Kreditkort Statement 134.74.pdf
-en----     10/06/2018     12:41              0 3 = 9.10.16 Kreditkort Statement 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kreditkort Statement 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kreditkort Statement 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Kreditkort Statement 123.45.pdf