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, we will be using Vinduer PowerShell with 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 is used on strings in 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

Skriv et svar