Как переименовать файлы в пакетном режиме с помощью счетчика?

Как переименовать файлы в пакетном режиме с помощью счетчика?

У меня есть 14 000 фотографий, отсортированных по файлам по году и месяцу, но снятых несколькими камерами. Я хочу, чтобы имя файла отражало дату, когда была сделана фотография.

Например, все фотографии, сделанные 16 октября 1998 года, находятся в папке под названием 1998\10 October\19981016.

Я хочу, чтобы все фотографии назывались 19981016_0001 19981016_0002 и т. д.

Я могу добраться до точки, где он перечисляет папку, которую я хочу изменить, но я не могу фактически изменить ее. Все мои фотографии .jpg.

Я создал временный файл копий на случай, если я что-то испорчу. Я начал с того, что набрал:

cd "C:\Documents and Settings\Brooke LastName\Desktop\Temp" 

затем, после успешной загрузки файла, я использовал формулу, которую нашел на этом форуме.

ls *jpg | Foreach {$i=1} {Rename-Item _ -NewName ("$($.19981016){0:00000000#} .jpg" -f $i++) -whatif}

Ошибка, которую я получил, сказала

Unexpected token ' .19981016' in expression or statement.

At line:1 char:12 + $.19981016 <<<<

Ошибка повторялась несколько раз

Я нашел несколько формул в Интернете, но большинство из них создавали файлы, в которых нумерация производилась с помощью скобок, например, отпуск (1).jpg Мне нужен четырехзначный счетчик после подчеркивания в конце даты, например, 19981016_0001

решение1

Я думаю, вы изменили формулу и допустили как минимум две ошибки:

  • Rename-Item $_-> в противном случае PowerShell попытается переименовать файл с именем «_»
  • "$($_.Directory.Name)_{0:D9}.jpg" -f $i++- вам нужно захватить имя каталога текущего объекта, а для форматирования - проще использовать формат D#, проще посчитать, сколько цифр получится в итоге...

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