Переименование многих папок в PowerShell - PullRequest
1 голос
/ 07 августа 2011

У меня более 1000+ файлов, которые нужно переименовать.

Первая заданная папка и / или файлы сгруппированы по местоположению, поэтому первые четыре символа одинаковы для каждого файла;Есть четыре-пять разных локаций.Мне нужно удалить первые несколько символов имени папки.

Пример:

Старый файл: ABC_Doe, Jane
Новый файл: Doe, Jane

любые предложения относительно самого быстрого способа переносаэто из?

Я пробовал все следующее:

  1st Attempt 
  $a = Get-ChildItem C:\example
  $b = Where-Object {$_.name -like “*ABC_*”}
  $cmdlet_name = “Rename-Item”
  $d = (cmdlet_name $a $b)
  invoke-expression $d

  2nd Attempt 
  $e = Get-ChildItem C:\example
  $f = $e.TrimStart (“ABC_”)

3-я попытка

Rename-Item -{$_.name -like “*ASD*”, “”}

Ответы [ 2 ]

6 голосов
/ 07 августа 2011

Попробуйте, получите все дочерние элементы (только файлы), удалите abc_, заменив их (ничем), и переименуйте каждый файл.Чтобы переименовать файлы в подкаталогах, добавьте параметр -Recurse в команду Get-ChildItem:

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { ($_.BaseName -replace '^ABC_') + $_.Extension }

UPDATE

На самом деле это также должно работать инамного короче (нет необходимости добавлять расширение файла, потому что для имени файла выполняется переименование).

Get-ChildItem c:\example -Filter ABC_* | Where-Object {!$_.PSIsContainer} | Rename-Item -NewName { $_.Name -replace '^ABC_' }
0 голосов
/ 07 августа 2011
get-childItem ABC_* | rename-item -newname { $_.name -replace 'ABC_','' }

Источник: get-help rename-item -full

...