Paano batch pangalanang muli bahagi ng filename sa Windows PowerShell gamit Regex?

Sa halimbawa na ito, meron kami 6 file sa ibaba ng petsa at filename sa ibaba:

Mode LastWriteTime Haba Pangalan
----                -------------         ------ ----
-isang ----       10/06/2018     12:40              0 1 = 9.8.16 Bank Statement 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Bank Statement 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Bank Statement 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Bank Statement 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Bank Statement 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Bank Statement 123.45.pdf

dito, ang filename ay naglalaman ng isang serial # sa simula, sinundan sa pamamagitan ng =, sinundan sa pamamagitan ng 'Bank Statement’ sinundan sa pamamagitan ng dulo ng statement balance.

Ang mga file ay sa katunayan Credit Pahayag Card at ang salitang 'Bank’ kailangang ma-papalitan ng mga salitang 'Credit Card'. Ang lahat ng mga natitirang bahagi ng filename ay dapat manatiling pareho.

Upang makamit ito, we will be using Windows PowerShell with Regex.

Upang ilista ang lahat ng mga bank statement, ginagamit namin ang ls utos, pagkatapos ay pipe ang output

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

Ang muling pangalanan command ay ginagamit pagkatapos ng pipe upang palitan ang pangalan ng file. $_ ay ang bagay na humahawak ang output bago ang pipe, at kami ay ang paggamit ng pangalan ng ari-arian ng $_ bagay. -replace is used on strings in PowerShell, na kung saan ay pumapalit sa isang string sa isang bagong string. -replace ay isang function na tumatagal 2 parameter. Ang ika-1 parameter ay ang mga lumang string na gusto naming palitan at ika-2 parameter ay ang bagong string.

Kinukunan ang grupo sa Regex nagpapahintulot sa amin na panatilihing bahagi ng string. sa Regex, kahit ano ilagay sa panaklong ay nakuha upang gamitin sa ibang pagkakataon. hal. (.+)Bank(.+) Kumukuha ang anumang bagay bago at pagkatapos ng character na 'Bangko'. Maaari naming gamitin ang mga nakunan mga bahagi, sa pamamagitan ng paggamit $ at isang bilang. Ang ika-1 ng panaklong kinukuha sa $1 at ang ika-2 panaklong kinukuha sa $2 etc…

Sa ika-1 ng parameter, kami ay tukuyin ang mga lumang string na gusto naming palitan, at sa parehong oras namin makuha ang mga bahagi ng string na gusto naming panatilihing (paghuli). Sa 2nd parameter, ang bagong string ay gumagamit ng mga nakunan mga bahagi na gusto naming panatilihing, pati na rin ang bagong string mismo eg. '$1Credit Card$2'.

resulta:

Mode LastWrite Time Haba Pangalan
----       ---------      ----            ------   ----
-isang ----     10/06/2018     12:40              0 1 = 9.8.16 Credit Card Statement 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Credit Card Statement 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Credit Card Statement 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Credit Card Statement 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Credit Card Statement 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Credit Card Statement 123.45.pdf

Mag-iwan ng Tugon