2016-11-17 2 views
0

Я пытаюсь просмотреть все файлы в папке и переименовать их так, чтобы имя стало тем, что находится между 2-м и 3-м _.Переименование файлов путем удаления частей имени файла

.: 1_2_3_4.pdf например становится 3.pdf

Осмотревшись, я смог найти ссылку, которая помогает с очень похожим вопросом - но я не могу заставить его работать на моей конкретной проблемы. Кто-нибудь будет помогать в этом?

Find character position and update file name

+0

Brilliant, благодаря Мартину. Из интереса, если бы я хотел настроить вашу команду, чтобы перейти от второго «_» до конца имени файла, например: 1_2_3_4.pdf станет 3_4.pdf, как бы я это сделал? – steveWB

+0

Измените первый литерал: ''. *? _. *? _ ([^ _] +). * ''To:''. *? _. *? _ ([^ _] +) '' ' –

+0

ahh, ''. *? _. *? _ ([^ _] +) '' нет двойных одинарных кавычек в конце. –

ответ

-1

Используйте Get-ChildItem используется для получения всех файлов и переименовать его с помощью Rename-Item Командлет (вместе с заменить):

Get-ChildItem 'c:\your_folder' | 
    Rename-Item -NewName { '{0}{1}' -f ($_.Name -replace '.*?_.*?_([^_]+).*', '$1'), $_.Extension } 
+0

некоторое объяснение поможет. :), но это не я, который отклонил этот ответ. – 4c74356b41

+2

@ 4c74356b41 Интересно, почему вы жалуетесь на объяснение, где в основном половина ваших ответов подобна «попробуйте это» или даже ничего не объясняет. Однако я объяснил, какой командлет я использовал, и что я использую регулярные выражения. Я не буду писать руководство по регулярному выражению в своих ответах. Спасибо за нижний план. –

+0

точно так же, как я сказал, я не сделал этого. – 4c74356b41

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