Я хочу добавить «.backup» ко всем именам файлов и папок (включая подпапки и файлы в подпапках) с помощью Powershell v2.0.Добавить «.backup» ко всем файлам, папкам и подпапкам в Powershell 2.0
Я придумал этот сценарий:
$origin = get-childItem -recurse | ?{ !($_.name -like "*.backup") }
$folders = $origin | ?{ $_.PSIsContainer }
$files = $origin | ?{ ! $_.PSIsContainer }
$files | rename-item -force -newname { $_.name + '.backup' }
$folders | rename-item -force -newname { $_.name + '.backup' }
Но я получаю эту ошибку для многих элементов, указав путь неправильно:
Rename-Item : Cannot rename because item at 'Microsoft.PowerShell.Core\FileSystem::E:\backup\test.backup\subfolder.backup\proc 1\backup\example.docx' does not exist.
At line:1 char:21
+ $files | rename-item <<<< -force -newname { $_.name + '.backup' }
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
Но такой файл (example.docx) существует в этот путь, тем не менее.
Почему эта ошибка возникает? И каков правильный код для добавления «.backup» к файлам и папкам в PS 2.0? Спасибо за любые идеи!
EDIT: Я не думаю, что мой вопрос является дубликатом When renaming a file with PowerShell, how do I handle filenames with "["? по двум причинам: 1 - цели разные (просто посмотрите на названия); 2- эта нить не дает мне кода, чтобы делать то, что я хочу, хотя это хорошая отправная точка (вот почему я связался с ней в своем ответе). Мой вопрос может быть неактуальным, но мне потребовалось несколько часов, чтобы понять, так что, может быть, я могу избавить кого-то от нескольких разочарований. Но мой вопрос плохо сформулирован, я сейчас переработаю его.
Возможный дубликат [При переименовании файла с помощью PowerShell, как обрабатывать имена файлов с помощью «\ [??] (Http://stackoverflow.com/questions/14259317/when-renaming-a-file-with-powershell -Как-Do-I-ручка-имена файлов-с) –