Как пакетное переименование части имени файла в 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
