Як пакетне перейменування частини імені файлу в 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 факт кредитних і слово «банк’ необхідно замінити словами «Кредитна картка». Все інше ім'я файлу повинні залишатися такими ж.

Для досягнення цієї мети, we will be using Вікна PowerShell with Regex.

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

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

Команда перейменування використовується після того, як труби для перейменування файлів. $_ це об'єкт, який утримує вихід до труби, і ми використовуємо ім'я властивості з $_ об'єкт. -replace is used on strings in 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

Напишіть відгук