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, Biz Regex ile Windows PowerShell kullanımı olacak.
tüm banka ifadeleri listelemek için, kullandığımız ls komuta, çıktısı daha sonra boru
ls | ren -newname {$_.name -replace('(.+)Banka(.+)','$1Credit Card$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 PowerShell içinde dizeleri kullanılır, 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
