我的PowerShell脚本:
$dst = 'C:\Temp'
#Get all folders in $dst
$folders = Get-ChildItem $dst | ?{ $_.PSIsContainer }
foreach($folder in $folders)
{
$cnt = (Get-ChildItem -filter *.txt $folder | Measure-Object).Count
$base = ($folder.FullName -split " \[.*\]$")[0]
$newname = $("{0} [{1}]" -f $base,$cnt)
Write-Host $folder.FullName "->" $newname
Rename-Item $folder.FullName $newname
}
问题
第一次运行时,我遇到了这个:
PS C:\Temp> C:\Temp\RenameFolders.ps1
C:\Temp\m1 -> C:\Temp\m1 [1]
在我的第二次运行中,我得到了这个:
PS C:\Temp> C:\Temp\RenameFolders.ps1
C:\Temp\m1 [1] -> C:\Temp\m1 [0]
Rename-Item : Cannot rename because item at 'C:\Temp\m1 [1]' does not exist.
At C:\Temp\RenameFolders.ps1:15 char:5
+ Rename-Item $folder.FullName $newname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
我知道问题出在 '[' 和 ']' 上,但我真的不明白为什么。
有人能解释一下为什么会出现这个问题吗?