2011-01-06 68 views
2

我有我的jpg文件名作爲EXIF日期。文件名的格式是YYYY-MM-DD-HH-MM-SS.JPG。這樣,它可以始終保持順序。現在我的相機被設置爲錯誤的時間。那麼我該如何將HH改爲-1小時呢?更改文件名中的HOUR。批處理腳本

例如,如果文件名是「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

注意,編輯的文件名不影響存儲在包含此相同的不正確的時間戳的JPG文件內的EXIF數據。

處理這個問題的一個好方法就是使用一個可以修改EXIF數據的工具,以及重命名要匹配的文件。 Phil Harvey提供的一種工具是Exiftool。它是免費的,開源的,可移植到許多平臺。它甚至支持Windows。

從網站引用:

你有沒有忘記服用一堆照片之前設定日期/時間您的數碼相機呢? ExifTool具有時間偏移功能,可以輕鬆地將批量修復應用於圖像的時間戳(即更改Windows資源管理器報告的「拍攝日期圖像」)。例如說,當您在2005年11:03 10:48:00投入新電池時,相機時鐘重置爲2000:01:01 00:00: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 2011-01-11 22:23:58