ExifTool 是一款開源、免費的命令行工具,支持跨平台,可以安裝到 Windows、Linux 和 Mac OS 平台上。
ExifTool 用於讀取、寫入和編輯圖像、音頻、視頻、PDF 等文件的元數據。元數據是指嵌入在文件中的隱藏信息,如拍攝時間、相機型號、GPS 座標、作者、版權等。
ExifTool 以命令行方式運行,雖然沒有圖形界面,但功能極其強大,支持超過 500 種文件格式和數十種元數據標準(如 EXIF、IPTC、XMP、GPS 等),適合技術用户和開發者使用。
和 ExifTool 同領域的工具有很多,主流的有 Lightroom、XnView、IrfanView 等。相比之下,ExifTool 的優勢是:完全免費,支持 200+ 多種格式,支持自動化腳本,支持自動備份等。
下載ExifTool
ExifTool官方發佈了 3 款安裝包:
下載地址:https://pan.quark.cn/s/618e4bb53681
- exiftool-13.42_64.zip:適用於 Windows 平台的安裝包;
- ExifTool-13.42.pkg:適用於 Mac OS 平台的安裝包;
- Image-ExifTool-13.42.tar.gz:適用於 Linux 平台的安裝包。
安裝ExifTool
筆者使用的電腦是 Windows x64 系統,接下來教大家手把手在 Windows 上安裝ExifTool。
1) 下載得到 exiftool-13.42_64.zip,解壓後的文件夾如下圖所示:
2) 將文件 exiftool(-k).exe 重命名為 exiftool.exe。
3) 配置環境變量,步驟如下:
① 按照下圖所示,打開電腦的設置窗口:
② 按照下圖找到環境變量的設置入口:
③ 找到系統變量 Path,雙擊打開它:
④ 在 Path 系統變量中,添加 ExifTool 的安裝路徑,比如筆者將它安裝到了 D 盤下的 exiftool-13.42_64 文件夾裏:
逐級點擊“保存”或者“確定”即可。
4) 檢測環境變量是否配置成功。按“Win+R”組合鍵,輸入“cmd” 打開 CMD 命令行窗口,如下圖所示,輸入 exiftool -ver 命令:
輸出 exiftool 的版本號信息,表示配置成功。
使用ExifTool
使用 ExifTool 需要在 CMD 命令行窗口中執行相應的命令。例如,讀取文件 a.jpg 的所有元數據(存儲路徑是 ),執行如下命令:
exiftool a.jpg
執行結果如下圖所示:
還是以 a.jpg 文件為例,這裏再給出幾種使用 ExifTool 的命令:
//寫入標籤artist、值rmnof到文件a.jpg(如果artist已存在將更新其值)
exiftool -artist=rmnof a.jpg
exiftool -artist=rmnof a.jpg b.jpg c.jpg (同時寫入多個文件)
exiftool -artist=rmnof D:/images (寫入目錄中所有文件)
exiftool -artist=rmnof D:/images -r (遞歸處理子目錄)
exiftool -artist="rmnof" -copyright="rmnof.com" a.jpg (同時寫入多個標籤)
//將創建時間、光圈、快門速度和ISO四項以列表形式保存為out.txt
exiftool -T -createdate -aperture -shutterspeed -iso DIR > out.txt
//打印某照片的尺寸和曝光時間
exiftool -s -ImageSize -ExposureTime a.jpg
//遞歸掃描某目錄所有照片,將共有的元數據寫入相同文件名的txt文件中
exiftool -r -w .txt -common DIR
//生成image.raw的縮略圖thumbnail.jpg
exiftool -b -ThumbnailImage image.raw > thumbnail.jpg
//從a.jpg提取完整的xmp數據記錄
exiftool -xmp -b a.jpg> out.xmp
//遞歸刪除某目錄下所有文件的全部元數據
exiftool -all= -r DIR
ExifTool命令格式
讀取:exiftool [OPTIONS] [-TAG...] [--TAG...] FILE...
寫入:exiftool [OPTIONS] -TAG[+-<]=[VALUE]... FILE...
複製:exiftool [OPTIONS] -tagsFromFile SRCFILE [-SRCTAG[>DSTTAG]...] FILE...
其他:exiftool [ -ver | -list[w|f|r|wf|g[NUM]|d|x] ]
其中,各個參數的含義分別是:
標籤選項
-TAG or --TAG 提取或排除指定的標籤
-TAG[+-^]=[VALUE] 向標籤寫入新值
-TAG[+-]<=DATFILE 從數據文件讀取標籤寫入文件
-TAG[+-]<SRCTAG 複製標籤值(見-tagsFromFile)
-tagsFromFile SRCFILE 複製某文件的標籤值
-x TAG (-exclude) 排出指定標籤
輸入輸出文本格式
-args (-argFormat) 將元數據格式化為ExifTool參數
-b (-binary) 以二進制輸出元數據
-c FMT (-coordFormat) 設置GPS座標格式
-charset [[TYPE=]CHARSET] 指定字符編碼
-csv[[+]=CSVFILE] 以CSV格式導出/導入標籤
-d FMT (-dateFormat) 設置日期/時間的格式
-D (-decimal) 以十進制顯示標籤ID號
-E,-ex,-ec (-escape(HTML|XML|C))為HTML,XML或C的轉義標記值
-f (-forcePrint) 強制打印所有指定的標籤
-g[NUM...] (-groupHeadings) 按標籤組輸出
-G[NUM...] (-groupNames) 打印每個標籤的組名
-h (-htmlFormat) 輸出為HTML格式
-H (-hex) 以十六進制顯示標籤ID號
-htmlDump[OFFSET] 生成HTML格式的二進制轉儲
-j[[+]=JSONFILE] (-json) 以JSON格式導出/導入標籤
-l (-long) 使用長2行輸出格式(標籤、值各一行)
-L (-latin) 使用Windows Latin1編碼
-lang [LANG] 設定當前語言
-listItem INDEX 從列表中提取特定項目
-n (--printConv) 不轉換,直接打印
-p FMTFILE (-printFormat) 以指定格式輸出
-php 將標籤導出為PHP數組
-s[NUM] (-short) 簡短輸出
-S (-veryShort) 非常簡短輸出
-sep STR (-separator) 設置列表項的分隔符字符串
-sort 按字母順序對輸出進行排序
-struct 啓用結構化信息的輸出
-t (-tab) 以製表符分隔的列表格式輸出
-T (-table) 以表格格式輸出
-v[NUM] (-verbose) 打印詳細消息
-w[+|!] EXT (-textOut) 寫入(或覆蓋!)輸出的文本文件
-W[+|!] FMT (-tagOut) 為每個標籤寫入輸出文本文件
-Wext EXT (-tagOutExt) 用-W指定要寫入的文件類型
-X (-xmlFormat) 使用RDF/XML輸出格式
執行選項
-a (-duplicates) 允許提取重複的標籤
-e (--composite) 不生成複合標籤
-ee (-extractEmbedded) 從嵌入式文件中提取信息
-ext[+] EXT (-extension) 只處理具有指定擴展名的文件
-F[OFFSET] (-fixBase) 修復製造商Makernotes偏移
-fast[NUM] 提取元數據時提高速度
-fileOrder[NUM] [-]TAG 設置文件處理順序
-i DIR (-ignore) 忽略指定的目錄名稱
-if[NUM] EXPR 按條件處理文件
-m (-ignoreMinorErrors) 忽略小錯誤和警告
-o OUTFILE (-out) 設置輸出文件或目錄名稱
-overwrite_original 重命名tmp文件覆蓋原始文件
-overwrite_original_in_place 通過複製tmp文件覆蓋原始文件
-P (-preserve) 保留文件修改日期/時間
-password PASSWD 處理受保護文件的密碼
-progress[:[TITLE]] 顯示文件進度計數
-q (-quiet) -q不顯示正常消息,-q-q不顯示警告
-r[.] (-recurse) 遞歸處理子目錄
-scanForXMP 掃描所有文件以獲取XMP
-u (-unknown) 提取未知標籤
-U (-unknown2) 提取未知的二進制標籤
-wm MODE (-writeMode) 設置用於寫入/創建標籤的模式
-z (-zip) 讀/寫壓縮信息
其他選項
-@ ARGFILE 從文件中讀取命令行參數
-k (-pause) 結束前先暫停
-list[w|f|wf|g[NUM]|d|x] 列出各種exiftool功能
-ver 打印版本號
-- 結束選項
特殊功能
-geotag TRKFILE 從指定的GPS日誌對圖像進行地理標記
-globalTimeShift SHIFT 移位所有格式化的日期/時間值
-use MODULE 從插件模塊添加功能
實用工具
-delete_original[!] 刪除"_original"備份
-restore_original 從"_original"備份還原
高級選項
-api OPT[[^]=[VAL]] 設置ExifTool API選項
-common_args 定義通用參數
-config CFGFILE 指定配置文件名
-echo[NUM] TEXT 將文本回顯到stdout或stderr
-efile[NUM][!] ERRFILE 保存錯誤的文件名
-execute[NUM] 一行執行多個命令
-srcfile FMT 處理其他文件來源
-stay_open FLAG 繼續閲讀-@ argfile,即使在EOF之後
-userParam PARAM[[^]=[VAL]] 設置用户參數 (API UserParam opt)
關於 ExifTool 更詳細的介紹,感興趣的讀者可前往 ExifTool 官網。