0

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-そのスレッドは、良い出発点であるにもかかわらず、私が望むことを行うためのコードを提供しません(そのため、回答でリンクしました)。私の質問は無関係かもしれませんが、理解するのに数時間かかりました。しかし、私の質問はうまく定式化されていないので、今から作り直します。

4

1 に答える 1