
У меня есть 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#, проще посчитать, сколько цифр получится в итоге...