先頭と末尾にスペースが含まれる名前を持つサブフォルダー内に、数百のサブフォルダーとファイルがあるフォルダーがあります。これらのフォルダーとファイルは、Node JS アプリを使用して作成されました。ここで、フォルダーとファイルのファイル名から先頭と末尾のスペースを削除する必要があります。
この目的のために構築されていると思われるこのスクリプトを見つけました。
関数を使用して、同じブログで言及されている先頭のスペースでファイル/フォルダーを作成すると、スクリプトはそれらの名前を変更できます。
ただし、ノード JS アプリを使用して作成されたファイル/フォルダーでは機能しません。フォルダー/ファイルの名前を変更すると、-で失敗します
Rename-Item : Cannot rename because item at 'C:\Folder\ Example App Folder ' does not exist.
At C:\renamefileswithspaces.ps1:25 char:13
+ Rename-Item -LiteralPath $_.fullname -NewName (“{0}{1}{2} ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
1 つのフォルダー (スクリプトの外部) に対して次のコマンドレットを実行すると、同じエラーで失敗します -
$f = Get-ChildItem -Path 'C:\Folder' -Filter "*Example*"
Rename-Item -LiteralPath $f.FullName -NewName $f.Name.Trim()
Rename-Item : Cannot rename because item at 'C:\Folder\ Example App Folder ' does not exist.
At line:1 char:1
+ Rename-Item -LiteralPath $f.FullName -NewName $f.Name.Trim()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
アプリを使用して作成されたファイル/フォルダーでは Rename-Item が失敗するのに、PowerShell を使用して作成されたファイル/フォルダーでは機能するのはなぜですか?
編集: Windows Server 2016 Standard で実行されています。PowerShell バージョン - 5.1.14393.3866
編集 2:ここから PowerShell 7.1.4 に更新しましたが、問題はまだ存在します。