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
