Wie man Batch-Umbenennen Teil des Dateinamens in Windows Powershell mit Regex?
In diesem Beispiel, wir haben 6 Dateien unten mit dem Datum und Dateinamen unter:
Modus Lastwritetime Länge Namen ---- ------------- ------ ---- -ein---- 10/06/2018 12:40 0 1 = 9.8.16 Kontoauszug 298.67.pdf -ein---- 10/06/2018 12:40 0 2 = 9.9.16 Kontoauszug 134.74.pdf -ein---- 10/06/2018 12:41 0 3 = 9.10.16 Kontoauszug 123.43.pdf -ein---- 10/06/2018 12:41 0 4 = 9.11.16 Kontoauszug 134.54.pdf -ein---- 10/06/2018 12:41 0 5 = 9.12.16 Kontoauszug 157.98.pdf -ein---- 10/06/2018 12:41 0 6 = 9.1.17 Kontoauszug 123.45.pdf
Hier, der Dateiname enthält eine serielle # am Anfang, gefolgt von =, von ‚Kontoauszug gefolgt’ bis zum Ende des Rechnungsbetrages gefolgt.
Diese Dateien sind in der Tat Kreditkartenabrechnungen und das Wort ‚Bank’ muss durch die Worte ‚Kreditkarte‘ ersetzt. Der ganze Rest des Dateinamens sollte gleich bleiben.
Um dies zu erreichen,, wir werden mit Windows Powershell mit Regex.
Zur Liste alle Kontoauszüge, wir benutzen das ls Befehl, dann das Ausgaberohr
ls | ren -newname {$_.name -replace('(.+)Bank(.+)','$1Credit Card$2')}
Der Umbenennungs Befehl wird nach dem Rohr verwendet, um die Dateien zu umbenennen. $_ ist das Objekt, das die Ausgabe vor dem Rohr hält,, und wir werden mit der Eigenschaft Name des $_ Objekt. -replace auf Strings in Powershell verwendet, die ersetzt einen String mit einer neuen Zeichenfolge. -replace ist eine Funktion, nimmt 2 Parameter. Der erste Parameter ist die alte Zeichenfolge, die wir ersetzen wollen und der zweite Parameter ist die neue Zeichenfolge.
Capturing Gruppen in Regex ermöglicht es uns, halten Teile der Zeichenfolge. in Regex, alles in Klammern gesetzt wird gefangen später zu verwenden,. zB. (.+)Bank(.+) fängt alles vor und nach den ‚Bank‘ Zeichen. Wir können diese erfassten Teile verwenden, durch die Nutzung $ und eine Reihe. Die erste Klammer fängt in $1 und die zweite Klammer fängt in $2 etc…
Im ersten Parameter, geben wir die alte Zeichenfolge, die wir ersetzen wollen, und zugleich wir die Teile der Zeichenfolge erfassen, die wir wollen, halten (Erfassung). Im zweiten Parameter, die neue Zeichenfolge verwendet die aufgenommenen Teile, die wir behalten wollen, sowie die neue Zeichenfolge selbst zB. '$1Credit Card$2'.
Ergebnis:
Modus LastWrite Zeit Dauer-Name ---- --------- ---- ------ ---- -ein---- 10/06/2018 12:40 0 1 = 9.8.16 Kreditkartenabrechnung 298.67.pdf -ein---- 10/06/2018 12:40 0 2 = 9.9.16 Kreditkartenabrechnung 134.74.pdf -ein---- 10/06/2018 12:41 0 3 = 9.10.16 Kreditkartenabrechnung 123.43.pdf -a ---- 10/06/2018 12:41 0 4 = 9.11.16 Kreditkartenabrechnung 134.54.pdf -a ---- 10/06/2018 12:41 0 5 = 9.12.16 Kreditkartenabrechnung 157.98.pdf -a ---- 10/06/2018 12:41 0 6 = 9.1.17 Kreditkartenabrechnung 123.45.pdf
