8

У меня есть сотни файлов JPG в папке. Я хочу переименовать каждый файл, чтобы имя файла было заменено на «Дата и время изменения» этого файла, а именно DD.MM.RRRR.HH.MM.jpg . Например,

Before    After  

001.jpg   11.01.2011.16.58.jpg  
002.jpg   12.01.2011.09.32.jpg  
003.jpg   14.01.2011.12.41.jpg  
...       ...

Поскольку двоеточие (:) нельзя использовать в именах файлов, двоеточие между HH и MM должно быть заменено точкой.

Я не хочу использовать сторонний инструмент. Можете ли вы предоставить мне код для достижения этого в Powershell или командной строке?

2 ответа2

13

Попробуйте это в Powershell:

Get-ChildItem *.jpg | Rename-Item -newname {$_.LastWriteTime.toString("dd.MM.yyyy.HH.mm") + ".jpg"}
0

Я надеюсь, что вы, ребята, не против моего отзыва здесь.

«Rename-Item» дал мне эту ошибку: Rename-Item: Невозможно создать файл, когда этот файл уже существует.

Поэтому я добавил к решению Siim K следующее и запустил его в Windows PowerShell ISE:

Get-ChildItem * .jpg | ForEach-Object {$ NewName = $ .LastWriteTime.toString("гггг.MM.dd.HH.mm.ss.ss ") +($ script:i ++) +" .jpg "$ Destination = Join-Path -Path $.Справочник.FullName -ChildPath $ NewName Move-Item -Path $ _.FullName -Destination $ Destination -Force}

Я нашел 'гггг.Порядок в MM.dd.mm.ss.ss показал мои изображения лучше, и я узнал, что ни одно из моих изображений не было уменьшено (случайно удалено) в папке. Я надеюсь, что это полезно для других «суперпользователей» (начинающих или опытных).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .