Порядок, в котором Dir (который является псевдонимом для Get-ChildItem) извлекает элементы, строго не гарантируется. Кроме того, если это сортировка, то, вероятно, сортирует их как строки, а «444026-444050 10» предшествует «444026-444050 2» как строки. Возможно, стоит вставить SortObject в ваш конвейер и использовать Split для получения нужного вам порядкового номера:
Dir *.pdf | Sort-Object -Property {[int]$_.Name.Split()[1].Split(".")[0]} | ForEach-Object -begin { $count=26 } -process { rename-item $_ -NewName "4440$count.pdf"; $count++ }
Ключевая часть - это новый этап конвейера, вставленный после Dir
и до ForEach-Object
:
Sort-Object -Property {[int]$_.Name.Split()[1].Split(".")[0]}
Это говорит о необходимости сортировать вывод Dir
в соответствии с тем, что находится между первым пробелом и последующим периодом, сравнивая эти вещи как целые числа (не строки). Это гарантирует, что ваши результаты будут упорядочены и вы получите их в порядке чисел c, а не в лексикографии c.