Як пакетне перейменування частини імені файлу в 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
