Powershell v2.0 を使用して、すべてのファイルおよびフォルダー名 (サブフォルダーおよびサブフォルダー内のファイルを含む) に「.backup」を追加したいと考えています。
私はこのスクリプトを思いつきました:
$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) はそのパスに存在します。
なぜそのエラーがスローされるのですか? また、PS 2.0 でファイルとフォルダーに「.backup」を追加するための正しいコードは何ですか? アイデアをありがとう!
編集: I don't think my question is a duplicate of PowerShell, how do I handle filenames with "["? 理由は 2 つあります。1- 目的が異なります (タイトルを見てください)。2-そのスレッドは、良い出発点であるにもかかわらず、私が望むことを行うためのコードを提供しません(そのため、回答でリンクしました)。私の質問は無関係かもしれませんが、理解するのに数時間かかりました。しかし、私の質問はうまく定式化されていないので、今から作り直します。