У мене є папки з зображеннями (* .png і * .jpg)
>C:\Directory\Folder1
01.png
02.png
03.jpg
04.jpg
05.png
І я хочу перейменувати всі файли, як це, використовуючи powershell:
>C:\Directory\Folder1
Folder1 - 01.png
Folder1 - 02.png
Folder1 - 03.jpg
Folder1 - 04.jpg
Folder1 - 05.png
Тому я придумав цю просту лінію:
Get-ChildItem | Where-Object { $_.Extension -eq ".jpg" -or $_.Extension -eq ".png"} | rename-item -newname {$_.Directory.Name +" - " + $_.Name}
Якщо у мене є 35 або менше файлів у папці, я отримаю бажаний результат, але якщо є 36 або більше Файли, я закінчу з цим:
>C:\Directory\Folder1
Folder1 - Folder1 - Folder1 - 01.png
Folder1 - Folder1 - Folder1 - 02.png
Folder1 - Folder1 - Folder1 - 03.jpg
Folder1 - Folder1 - Folder1 - 04.jpg
Folder1 - Folder1 - Folder1 - 05.png
Цикл припиняється, коли ім'я файлу перевищує 248 символів.
Будь-які ідеї, чому це цикл?
EDIT: Як було запропоновано, просте рішення - перевірити, чи ім'я папки вже додано до імені файлу:
Get-ChildItem | Where-Object { $_.Extension -eq ".jpg" -or $_.Extension -eq ".png" -and !$_.Name.StartsWith($_.Directory.Name) } | rename-item -newname {$_.Directory.Name +" - " + $_.Name}
Але це не говорить мені, чому це цикл, коли є більше 36 файлів в папці.