Измените ЧАС в именах файлов.Пакетный скрипт - PullRequest
2 голосов
/ 07 января 2011

У меня есть имена файлов jpg как даты EXIF.Формат имени файла: ГГГГ-ММ-ДД-ЧЧ-ММ-СС.JPG.Таким образом, они всегда будут последовательными.Теперь моя камера была установлена ​​на неправильный час.Так как мне изменить ЧЧ на -1 час, чем на самом деле.

Например, если имя файла "2010-11-26-19-15-17_C.jpg", я хочу изменить его на "2010-11-26- 18 -15-17_C.jpg».У меня есть сотни файлов, и все они должны быть изменены на один час раньше, чем на самом деле в именах файлов.

Может быть, пакетный скрипт?Я использовал программное обеспечение Renamer, но не могу заставить его работать правильно.

Ответы [ 2 ]

3 голосов
/ 07 января 2011

Обратите внимание, что в худшем случае вам может потребоваться изменить не только час, но также дату, месяц и год (например, 2010-01-01-00-10-10.jpg должно стать 1999-12-31-23-10-10.jpg)

Если вы проигнорируете это предупреждение, вот пакетный файл, который позволит вам уменьшить только часовой компонент имени.

@echo off
setlocal

for /f "usebackq delims=|" %%f in (`dir /b *.jpg`) do call :ProcessFile %%f

goto :End

:ProcessFile

for /f "tokens=1,2,3,4,*delims=-" %%i in ("%1") do call :ParseName %1 %%i %%j %%k %%l %%m

goto :End

:ParseName

set /A NEW_HOUR=%5-1

if "%NEW_HOUR%" == "9" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "8" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "7" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "6" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "5" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "4" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "3" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "2" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "1" set NEW_HOUR=0%NEW_HOUR%
if "%NEW_HOUR%" == "0" set NEW_HOUR=0%NEW_HOUR%

set OLD_NAME=%1
set NEW_NAME=%2-%3-%4-%NEW_HOUR%-%6

echo Old name : %OLD_NAME%
echo New name : %NEW_NAME%

rem Do copy, rename or whatever you want to do

goto :End

:End
endlocal
1 голос
/ 10 января 2011

Обратите внимание, что редактирование имени файла не влияет на данные EXIF, хранящиеся в файле JPG, который содержит ту же самую неправильную метку времени.

В общем, хорошим способом решения этой проблемы является использование инструмента, которыйМожно изменить данные EXIF, а также переименовать файл для соответствия.Одним из таких инструментов является Exiftool Фила Харви.Он бесплатный, с открытым исходным кодом и переносим на многие платформы.Он даже поддерживает Windows.

Цитирование со своего сайта:

Вы когда-нибудь забывали установить дату / время на своей цифровой камере, прежде чем делать несколько снимков?ExifTool имеет функцию временного сдвига, которая позволяет легко применить пакетное исправление к временным меткам изображений (т. Е. Изменить дату создания снимка, сообщаемую Windows Explorer).Скажем, например, что часы вашей камеры были сброшены на 2000: 01: 01 00:00:00, когда вы вставили новую батарею в 2005: 11: 03 10:48:00.Тогда все снимки, которые вы сделали впоследствии, имеют неправильные метки времени на 5 лет, 10 месяцев, 2 дня, 10 часов и 48 минут.Чтобы это исправить, поместите все изображения в один каталог («DIR») и запустите exiftool:

exiftool "-DateTimeOriginal+=5:10:2 10:48:0" DIR

В приведенном выше примере изменяется только тег DateTimeOriginal, но любая записываемая датаили метка времени может быть смещена, и несколько меток могут быть записаны с помощью одной командной строки.Обычно в изображениях JPEG значения DateTimeOriginal, CreateDate и ModifyDate должны быть изменены.Для удобства был определен ярлык ярлыка AllDates, представляющий эти три тега.Так, например, если вы забыли установить часы своей камеры на 1 час назад в конце летнего времени осенью, вы можете исправить изображения с помощью:

exiftool -AllDates-=1 DIR

Он также поддерживает переименование файлов на основе шаблона имени файла, который может не только изменять имя, но и распределять файлы в виде дерева.Существует полный пример на сайте , но простой случай выглядит следующим образом

exiftool "-FileName<CreateDate" -d "%Y-%m-%d-%H-%M-%S.%%e" DIR

для переименования каждого файла в каталоге с именем DIR в соответствии с запрошенным шаблоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...