Hoe kan batch hernoemen deel van de bestandsnaam in Windows PowerShell met behulp van reguliere expressies?

In dit voorbeeld, we hebben 6 Onderstaande bestanden met de datum en de bestandsnaam hieronder:

Mode LastWriteTime Lengte Naam
----                -------------         ------ ----
-een----       10/06/2018     12:40              0 1 = 9.8.16 Bankafschrift 298.67.pdf
-een----       10/06/2018     12:40              0 2 = 9.9.16 Bankafschrift 134.74.pdf
-een----       10/06/2018     12:41              0 3 = 9.10.16 Bankafschrift 123.43.pdf
-een----       10/06/2018     12:41              0 4 = 9.11.16 Bankafschrift 134.54.pdf
-een----       10/06/2018     12:41              0 5 = 9.12.16 Bankafschrift 157.98.pdf
-een----       10/06/2018     12:41              0 6 = 9.1.17 Bankafschrift 123.45.pdf

Hier, de bestandsnaam bevat een serieel # in het begin, vervolgens =, gevolgd door de ‘Verklaring van de bank’ gevolgd door het einde van de verklaring evenwicht.

Deze bestanden zijn in feite creditcardafschriften en het woord ‘Bank’ moet worden vervangen door de woorden ‘Credit Card’. Al de rest van de bestandsnaam moet hetzelfde blijven.

Om dit te bereiken, we will be using Windows PowerShell with Regex.

Om een ​​lijst van alle bankafschriften, wij gebruiken de ls opdracht, Vervolgens pijp de output

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

De rename commando wordt gebruikt nadat de pijp om de bestanden te hernoemen. $_ is het object dat de uitgang bewaard totdat de buis, en we zijn met de eigenschap naam van de $_ voorwerp. -replace is used on strings in PowerShell, die vervangt een string met een nieuwe string. -replace is een functie die draait 2 parameters. De 1e parameter is de oude string die we willen vervangen en de 2e parameter is de nieuwe string.

Het vastleggen van groepen in Regex laat ons delen van de string te houden. in Regex, iets neer te zetten tussen haakjes wordt vastgelegd om later te gebruiken. bv. (.+)Bank(.+) vangt iets voor en na de tekens ‘Bank’. We kunnen deze gevangen onderdelen te gebruiken, door het gebruiken van $ en een aantal. De 1e haakjes vangt in $1 en de 2e haakjes vangt in $2 enz…

In de 1e parameter, specificeren we de oude reeks die we willen vervangen, en op hetzelfde moment dat we vastleggen van de delen van de string die we willen houden (gevangen nemen). In de 2e parameter, de nieuwe string maakt gebruik van de gevangen onderdelen die we willen houden, evenals de nieuwe string zelf bv. '$1Credit Card$2'.

Resultaat:

Mode LastWrite Time Lengte Naam
----       ---------      ----            ------   ----
-een----     10/06/2018     12:40              0 1 = 9.8.16 Verklaring van de Creditcard 298.67.pdf
-een----     10/06/2018     12:40              0 2 = 9.9.16 Verklaring van de Creditcard 134.74.pdf
-een----     10/06/2018     12:41              0 3 = 9.10.16 Verklaring van de Creditcard 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Verklaring van de Creditcard 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Verklaring van de Creditcard 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Verklaring van de Creditcard 123.45.pdf

laat een antwoord achter