2011-01-06 2 views
2

У меня есть имена файлов jpg как даты EXIF. Формат имени файла - YYYY-MM-DD-HH-MM-SS.JPG. Таким образом, он всегда сохраняет их в последовательности. Теперь у моей камеры был установлен неправильный час. Итак, как мне изменить HH на -1 час, чем на самом деле.Изменение HOUR в именах файлов. Batch Script

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

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

ответ

3

Обратите внимание, что в худшем случае может возникнуть необходимость изменить не только час, но и дату, месяц и год, а также (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

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

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

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

Вы когда-нибудь забыли установить дату/время на вашей цифровой камеры, прежде чем принимать кучу снимков? ExifTool имеет функцию сдвига во времени, которая упрощает применение пакетного исправления к отметкам времени для изображений (т. Е. Изменение «Дата сделанного снимка», сообщенного проводником Windows). Скажем, например, что часы вашей камеры были сброшены до 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

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

exiftool -AllDates-=1 DIR

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

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

переименовать все файлы в каталоге с именем DIR, чтобы соответствовать необходимому шаблону.

+0

Большое спасибо за информацию! Я буду изучать и (возможно,) использовать ExifTool. – SRB