У меня есть папка, содержащая несколько сотен .mp3-файлов, все с одинаковым именем и возрастающим номером. Имена файлов выглядят так:
Test 01.mp3
Test 02.mp3
Test 03.mp3
Test 100.mp3
Test 101.mp3
Test 102.mp3
Как видите, количество ведущих нулей в первых файлах неверное, так как их должно быть на один больше. Я хотел бы использовать PowerShell для решения проблемы, поскольку в настоящее время я учусь работать с этим весьма полезным инструментом.
Я попытался подсчитать цифры в именах файлов с помощью оператора замены, чтобы отфильтровать любые нецифровые символы. Я предположил, что первые 99 файлов будут иметь три цифры, в то время как другие файлы будут иметь больше (считая «3» расширения файла .mp3)
Get-Childitem | Where {($_.Name.Replace("\D","")).Length -le 3}
Это должно дать мне любые файлы, которые имеют 3 или меньше цифр в имени файла, но это не так. На самом деле ничего не показывает. Если я увеличу число в конце до 11, я получу первые три тестовых файла, а увеличение до 12 покажет все шесть из них. Я предполагаю, что оператор замены не применяется к имени файла до фильтрации на основе оператора длины, хотя я использовал скобки вокруг $_.Name.Replace(\D,)
Что, черт возьми, я делаю неправильно?