我有一个文件夹,其中包含 100 个子文件夹和这些子文件夹中的文件,这些子文件夹的名称带有前导和尾随空格。这些文件夹和文件是使用 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
如果我只为一个文件夹(脚本之外)运行以下 cmdlet,它会失败并出现相同的错误 -
$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,问题仍然存在。