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

Для достижения этой цели, мы будем использовать Окна 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

Оставьте ответ