Пакетное изменение имен файлов камеры на подробные имена файлов, по одной папке за раз

Пакетное изменение имен файлов камеры на подробные имена файлов, по одной папке за раз

Это вопрос о работе Windows PowerShell на настольном ПК с Windows Home 64-бит.

Я меняю около сотни названий файлов фотографий с файлов камеры и сканера 005_2.JPGна подробные названия файлов, например Some Kid Riding a Bicycle.

Я использую команду Windows PowerShell:

Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}

Все работает отлично.

Но когда я просто перехожу в следующую папку и просто заменяю новую строку на новую тему в новой папке, номер «индекса», добавленный к имени файла, не сбрасывается обратно на «1», а увеличивается на больший номер — даже не на следующий номер после индекса в предыдущей операции (в данном случае 111).

Если последний индекс в последней операции был «111», как в этом примере:

-a----      2/4/2020   8:02 PM         404601 Some Kid Riding a Bicycle-111.jpg

и затем я перехожу в папку, содержащую 8 файлов:

Mode                LastWriteTime         Length Name
-a----        1/16/2020  11:39 PM         598118 018_15.JPG

[6 lines omitted here]                                                          

-a----        1/16/2020  11:39 PM         727598 DSC017.jpg

и запустите:

> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}

в этой папке следующее имя файла в выходной последовательности:

-a----   1/16/2020  11:39 PM     598118 Some Old Guy Riding a Bicycle-120.jpg

Похоже, индекс переместился вперед на число файлов в новой целевой папке. Интересно, -f $nr++задействованы ли последние несколько символов ), но я не нашел никаких ссылок на такую ​​строку в моей скудной библиотеке.

Как это исправить, чтобы всё начиналось с -1 (или с какого-то другого предустановленного значения)?

решение1

$nr — это ваша переменная, и вы продолжаете итерировать ее значение с каждой командой. Ее область действия — ваш сеанс PWSH. Пока ваш сеанс открыт, значение $nr продолжает увеличиваться, если только вы не присвоите новое значение, выполнив инструкцию "$nr = 1".

Связанный контент