Як пакетне перейменування частини імені файлу в Windows PowerShell за допомогою Regex?

У цьому прикладі, ми маємо 6 файли нижче із зазначенням дати і імені файлу нижче:

Режим LastWriteTime Довжина Ім'я
----                -------------         ------ ----
-----       10/06/2018     12:40              0 1 = 9.8.16 Виписка з банківського рахунка 298.67.pdf
-a ----       10/06/2018     12:40              0 2 = 9.9.16 Виписка з банківського рахунка 134.74.pdf
-a ----       10/06/2018     12:41              0 3 = 9.10.16 Виписка з банківського рахунка 123.43.pdf
-a ----       10/06/2018     12:41              0 4 = 9.11.16 Виписка з банківського рахунка 134.54.pdf
-a ----       10/06/2018     12:41              0 5 = 9.12.16 Виписка з банківського рахунка 157.98.pdf
-a ----       10/06/2018     12:41              0 6 = 9.1.17 Виписка з банківського рахунка 123.45.pdf

тут, ім'я файлу містить серійний # на початку, з подальшим =, потім «Виписка з банківського рахунку’ а потім в кінці балансу звітності.

Ці файли знаходяться в звітності Card факт кредитних і слово «банк’ необхідно замінити словами «Кредитна картка». Все інше ім'я файлу повинні залишатися такими ж.

Для досягнення цієї мети, ми будемо використовувати Windows PowerShell з Regex.

Для того, щоб перерахувати всі банківські виписки, ми використовуємо ls команда, Потім труби на виході

Ls | жень -newname {$_.name -replace('(.+)банк(.+)','$1Credit Card$2')}

Команда перейменування використовується після того, як труби для перейменування файлів. $_ це об'єкт, який утримує вихід до труби, і ми використовуємо ім'я властивості з $_ об'єкт. -replace використовується на рядки в PowerShell, яка замінює рядок з новим рядком. -replace це функція, яка приймає 2 параметри. Перший параметром є старої рядком, яку ми хочемо замінити і другий параметром є новим рядком.

Захоплення групи в Regex дозволяє нам тримати частини рядка. У Regex, покласти що-небудь в дужках захоплюється використовувати пізніше. наприклад. (.+)Bank(.+) захоплює щось до і після того, як персонажів банку ". Ми можемо використовувати ці захоплені частини, з допомогою $ і ряд. Перша дужка захоплюються $1 і друга дужка захоплюються $2 і т.д.…

У 1-му параметрі, ми вказуємо стару рядок, яку ми хочемо замінити, і в той же час ми фіксуємо частини рядка, які ми хочемо зберегти (захоплення). У 2-й параметр, новий рядок використовує захоплені частини, які ми хочемо зберегти, а також сама нова рядок, наприклад,. '$1Credit Card$2'.

результат:

Режим LastWrite Час Довжина Ім'я
----       ---------      ----            ------   ----
-----     10/06/2018     12:40              0 1 = 9.8.16 Кредитна картка Заява 298.67.pdf
-a ----     10/06/2018     12:40              0 2 = 9.9.16 Кредитна картка Заява 134.74.pdf
-a ----     10/06/2018     12:41              0 3 = 9.10.16 Кредитна картка Заява 123.43.pdf -a ----     10/06/2018     12:41              0 4 = 9.11.16 Кредитна картка Заява 134.54.pdf -a ----     10/06/2018     12:41              0 5 = 9.12.16 Кредитна картка Заява 157.98.pdf -a ----     10/06/2018     12:41              0 6 = 9.1.17 Кредитна картка Заява 123.45.pdf