Пакетное переименование файлов с регулярным выражением

У меня есть несколько файлов следующего формата:

имя_имя‹номер›‹номер›[TIF‹11 номеров›].jpg

e.g. john_sam01 [TIF 15355474840].jpg

И я хотел бы удалить [TIF 15355474840] из всех этих файлов. Это включает начальный пробел перед '[TIF...' и каждый раз другую комбинацию из 11 цифр.

Таким образом, предыдущий пример станет таким: josh_sam01.jpg


Короче говоря, используя powershell (или cmd.exe) с регулярным выражением, я хотел бы превратить это имя файла:

josh_sam01 [TIF 15355474840].jpg

В это:

josh_sam01.jpg

С переменными: «Джон» «Сэм» два числа и числа после TIF.


person joe_young    schedule 14.06.2015    source источник


Ответы (1)


Что-то вроде, с добавлением новых строк для ясности:

dir ‹parameters to select the set of files› |
   % {
     $newName = $_.Name -replace '\s\[TIF \d+\]',''
     rename-item -newname $newName -literalPath $_.Fullname
   }

Почти наверняка добавление -whatif к переименованию, пока я не убедился, что правильно выбрал файл и переименовал его.

person Richard    schedule 14.06.2015
comment
Я бы, наверное, сделал -ireplace, никогда не знаешь :) - person Kev; 14.06.2015
comment
Rename-Item может читать прямо из конвейера. Просто создайте новое имя в блоке скриптов: ... | Rename-Item -NewName { $_.Name -replace '\s\[TIF \d+\]' } - person Ansgar Wiechers; 14.06.2015
comment
@Kev - в PowerShell -replace не учитывается регистр, поэтому это то же самое, что и -ireplace - person Peter Hahndorf; 15.06.2015
comment
@PeterHahndorf все эти годы использовал PowerShell, а я никогда не замечал :) - person Kev; 15.06.2015
comment
@Kev - это случается с лучшими из нас :) - person Peter Hahndorf; 15.06.2015
comment
Извините за мою некомпетентность, я новичок в powershell, но что вы подразумеваете под «параметрами для выбора набора файлов»? @Ричард - person joe_young; 06.07.2015
comment
@joe_young все, что вам нужно, чтобы выбрать файлы для переименования. (Например, -recurse, если файлы находятся в нескольких папках.) - person Richard; 06.07.2015