My powershell script:
$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
}
The problem
On my first run I get this:
PS C:Temp> C:TempRenameFolders.ps1
C:Tempm1 -> C:Tempm1 [1]
On my second run I get this:
PS C:Temp> C:TempRenameFolders.ps1
C:Tempm1 [1] -> C:Tempm1 [0]
Rename-Item : Cannot rename because item at 'C:Tempm1 [1]' does not exist.
At C:TempRenameFolders.ps1:15 char:5
+ Rename-Item $folder.FullName $newname
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Rename-Item], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.RenameItemCommand
I know that the problem is in '[' and ']', but I realy can't understand why.
Can someone explain me why is that a problem?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…