2016-09-01 3 views
-1

Я очень новичок в powershell. У меня есть папка с несколькими файлами, каждое имя файла, как:powershell переименовать все файлы в папке по шаблону

File1_backup_2016_09_01_095444_1628350.bak

нужно переименовать их все Filex_yyyymmdd.bak

+0

Такие основные задачи обычно легко решить [googling существующего решения] (https://www.google.com/#q=stackoverflow+powershell+rename+files+by+date). Нотабене StackOverflow не является Google. – wOxxOm

+0

Или, если вы знаете regexp, вы можете [сразу найти примеры] (https://www.google.com/#q=powershell%20rename%20files%20using%20regexp) использования в PS для переименования файлов. – wOxxOm

ответ

0

Что-то подобное должно работает для вас:

Get-ChildItem "C:\temp" |foreach { 
    $SplitName = $_.Name -split '_' 
    Rename-Item $_.FullName -NewName "$($SplitName[0])_$($SplitName[2])$($SplitName[3])$($SplitNa‌​me[4]).bak" 
} 
+0

Он говорит: Переименовать-Пункт: Невозможно переименовать, потому что элемент в 'AIB_backup_2016_09_01_095444_1628350.bak' не существует. (Я изменил путь, чтобы исправить один и получить-childitem работает, также проверил параметр split и может видеть разные части данных) – thotwielder

+0

Я изменил пример, и теперь он должен работать. Нужно использовать $ _. FullName insetad $ _ в rename comand – autosvet

+0

Это работает, но мне нужно что-то вроде этого: File1_20160901.bak, File1 - это часть перед первым _ в исходном имени файла. – thotwielder

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