Это вопрос о работе 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".