2015-06-14 4 views
0

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

имя _ имя < номер > < номер > [TIF < 11 номера >] .jpg

eg john_sam01 [TIF 15355474840].jpg

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

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


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

josh_sam01 [TIF 15355474840] .jpg

в этом:

josh_sam01.jpg

С переменными являются: 'Джон' 'Sam' два номера и номера после TIF.

ответ

2

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

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

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

+1

Я бы, наверное, сделал '-ireplace', вы просто никогда не знаете :) – Kev

+1

' Переименовать-Пункт' может читать непосредственно из конвейера. Просто создайте новое имя в скриптблоке: '... | Rename-Item -NewName {$ _. Name -replace '\ s \ [TIF \ d + \]'} ' –

+0

@Kev - В PowerShell' -replace' не учитывается регистр, поэтому он совпадает с '-ireplace' –

Смежные вопросы