Cum de a redenumi lot o parte din numele de fișier în Windows PowerShell utilizând Regex?

În acest exemplu, noi avem 6 Fișierele de mai jos, cu data și numele de fișier de mai jos:

Mod LastWriteTime Lungime Nume
----                -------------         ------ ----
-A----       10/06/2018     12:40              0 1 = 9.8.16 Banca Declaratie 298.67.pdf
-A----       10/06/2018     12:40              0 2 = 9.9.16 Banca Declaratie 134.74.pdf
-A----       10/06/2018     12:41              0 3 = 9.10.16 Banca Declaratie 123.43.pdf
-A----       10/06/2018     12:41              0 4 = 9.11.16 Banca Declaratie 134.54.pdf
-A----       10/06/2018     12:41              0 5 = 9.12.16 Banca Declaratie 157.98.pdf
-A----       10/06/2018     12:41              0 6 = 9.1.17 Banca Declaratie 123.45.pdf

Aici, numele de fișier conține un serial # la inceput, urmată de =, urmat de „Declarația Băncii’ urmată de sfârșitul anului soldul extrasului.

Aceste fișiere sunt în extrasele de card de credit și de fapt, cuvântul „Banca’ trebuie să fie înlocuite cu cuvintele „Card de credit“. Tot restul de numele fișierului trebuie să rămână aceeași.

Pentru a realiza acest lucru, we will be using Ferestre PowerShell with Regex.

Pentru a lista toate extrasele de cont, noi folosim ls comanda, apoi țeavă de ieșire

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

Comanda redenumire este utilizat după conducta pentru a redenumi fișierele. $_ este obiectul care deține ieșire înainte de a conductei, si folosim proprietatea Numele $_ obiect. -replace is used on strings in PowerShell, care înlocuiește un șir de caractere, cu un nou șir de caractere. -replace este o funcție care ia 2 parametrii. 1st parametru este vechi șirul pe care dorim să-l înlocuiască, iar doilea parametru este noul șir.

grupuri din Regex Capturarea ne permite să păstreze părți ale șirului. În Regex, nimic pus în paranteze este capturat de a folosi mai târziu. de exemplu,. (.+)Bank(.+) surprinde nimic înainte și după caracterele „Banca“. Putem folosi aceste piese capturate, prin utilizarea $ și un număr. 1st Paranteza surprinde în $1 iar două paranteze surprinde în $2 etc…

În primul parametru, specificam sirul vechi pe care vrem să-l înlocuiască, și în același timp, vom capta părțile șirul pe care dorim să le păstrați (captură). În al 2-lea parametru, noul șir folosește piesele capturate pe care dorim să le păstrați, precum și noul șir în sine ex. '$1Credit Card$2'.

Rezultat:

Mod LastWrite Timp Lungime Nume
----       ---------      ----            ------   ----
-A----     10/06/2018     12:40              0 1 = 9.8.16 Card de credit Declaratie 298.67.pdf
-A----     10/06/2018     12:40              0 2 = 9.9.16 Card de credit Declaratie 134.74.pdf
-A----     10/06/2018     12:41              0 3 = 9.10.16 Card de credit Declaratie 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Card de credit Declaratie 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Card de credit Declaratie 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Card de credit Declaratie 123.45.pdf

lasa un raspuns