Nasıl toplu Regex kullanarak Windows PowerShell'de dosya adının bir bölümünü yeniden adlandırmak?

Bu örnekte, sahibiz 6 Tarih ve aşağıda dosya adıyla aşağıdaki dosyalar:

Mod LastWriteTime Uzunluğu Adı
----                -------------         ------ ----
-bir ----       10/06/2018     12:40              0 1 = 9.8.16 Ekstre 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Ekstre 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Ekstre 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Ekstre 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Ekstre 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Ekstre 123.45.pdf

İşte, dosya bir seri içerir # başlangıçta, ardından =, ‘Banka Bildirimi takiben’ ifadesi dengesinin sonunda izledi.

Bu dosyalar aslında Kredi Kartı Tablolar ve kelime ‘Bank içindedir’ Kelime ‘Kredi Kartı’ ile değiştirilmesi gereken. dosya adının tamamı gerisi aynı kalmalıdır.

Bunu başarmak için, we will be using Camlar Güç kalkanı with Regex.

tüm banka ifadeleri listelemek için, kullandığımız ls komuta, çıktısı daha sonra boru

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

Yeniden adlandırma komut dosyalarını yeniden adlandırmak için borunun sonra kullanılır. $_ boru önce çıkış tutan amacı,, ve biz adı özelliğini kullanıyorsanız $_ nesne. -replace is used on strings in Güç kalkanı, hangi yeni dize ile bir dize değiştirir. -replace alan bir fonksiyondur 2 parametreler. 1 parametre biz değiştirmek istiyor eski dizedir ve 2 parametre yeni dizedir.

Regex grupları yakalama bize dizenin parçalarını tutmak sağlar. Regex olarak, Parantez içindeki koymak her şeyin daha sonra kullanmak üzere yakalanır. örneğin. (.+)Bank(.+) öncesi ve karakterlerin Bankası 'sonra herhangi bir şey yakalar. Biz bu yakalanan parçaları kullanabilirsiniz, kullanarak $ ve bir numara. 1 parantez içine yakalar $1 ve 2. parantez içine yakalar $2 vb…

1 parametresinde, biz değiştirmek istediğiniz eski dizesi belirtin, ve aynı zamanda biz saklamak istediğiniz dize bölümlerini yakalamak (ele geçirmek). 2 parametresinde, Yeni dize biz tutmak istiyorum yakalanan parçaları kullanır, yanı sıra yeni dize kendisi örn. '$1Credit Card$2'.

Sonuç:

Mod LastWrite Zaman Uzunluk Adı
----       ---------      ----            ------   ----
-bir ----     10/06/2018     12:40              0 1 = 9.8.16 Kredi Kartı Ekstresi 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Kredi Kartı Ekstresi 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Kredi Kartı Ekstresi 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Kredi Kartı Ekstresi 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Kredi Kartı Ekstresi 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Kredi Kartı Ekstresi 123.45.pdf

Cevap bırakın