TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南
TechMoon 科技月球
WordPress、SEO 與 AI 工具實測指南

Rename Photos 是 MIT 開源的跨平台照片改名工具,直接讀出照片裡的 EXIF 拍攝時間、相機與鏡頭資訊當新檔名,按檔名排序就等於按拍攝時間排序。安裝檔 4.4MB、改名全程在本機,這篇整理範本變數、嚴格模式、兩階段改名與 macOS 首開關卡。
用 AI 摘要這篇文章:
一次旅行回來,相機裡的檔案叫 DSC00321.ARW,手機的叫 IMG_5567.JPG,運動相機又是一套自己的編號。丟進同一個資料夾,按檔名排序,時間順序整個打散。要手動一張張改,幾千張照片根本改不完。
其實每張 JPEG 的檔頭裡都寫著自己被按下快門的時間,連當時用的相機、鏡頭、光圈都記著,只是檔名從來不反映這些。Rename Photos 做的事情就一件:把這些藏在照片裡的拍攝資料讀出來,直接變成新檔名。它是 MIT 授權的開源桌面工具,Windows、macOS、Linux 三平台都有安裝檔,macOS 版安裝檔實測 4.4MB,裝起來不佔空間。
檔名怎麼生成、缺拍攝資料的照片會發生什麼事、執行之後有沒有後悔藥,這幾件事直接決定它好不好用,一件一件看。
打開資料夾或把檔案拖進視窗後,畫面是一張表格:左邊原檔名,右邊新檔名預覽。新檔名由一段範本字串決定,從原始碼 src/const/index.ts 數下來共十六個變數,分成三組。日期組有 {YYYY}、{MM}、{DD}、{hh}、{mm}、{ss} 六個拆開的時間單位;拍攝資訊組有 {Date}、{Make}、{Camera}、{Lens}、{FocalLength}、{Aperture}、{Shutter}、{ISO};再加保留原檔名的 {Current} 與 {current},兩個寫法同義。
預設範本是最直覺的 {YYYY}{MM}{DD} {hh}.{mm}.{ss}。一張 2024 年 3 月 4 日早上 8 點 33 分 38 秒拍的 IMG_0032.JPG,套下去就是 20240304 08.33.38.JPG,按檔名排序就等於按拍攝時間排序。想保留原編號防呆,寫成 {YYYY}{MM}{DD}_{Current} 就好。
照片讀的是 EXIF 的原始拍攝欄位:拍攝時間抓 DateTimeOriginal,其餘從 Make、Model、LensModel、FocalLengthIn35mmFilm、FNumber、ExposureTime、PhotographicSensitivity 對應進來。所以 {Make}-{Camera}-{ISO} 這種範本,輸出會直接是 FUJIFILM-X-T5-640 這種看一眼就知道出處的檔名。影片也吃(mp4、mov、mkv、webm 等常見格式都列在內),但讀到的欄位只有拍攝時間、廠牌、裝置三個,比照片少一截。
RAW 檔也在支援清單裡:DNG、ARW、CR2、CR3、NEF、RAF、ORF、SR2、X3F 等都在內。Panasonic 的 RW2 比較麻煩,2025 年 5 月有人在 repo 提出 RW2 支援的請求,到 2026 年 6 月 28 日的 v1.0.2 補上,做法是先讀檔內嵌的 JPEG EXIF,讀不到再把 RW2 檔頭在記憶體裡正規化成 TIFF 餵給解析器,同一天這條請求被標成完成。單人維護的專案,節奏不快,但功能許願有被接走。
一個小細節:{Date} 一次輸出完整時間,但冒號在 Windows 檔名裡是禁字元,所以輸出會把冒號換成點號,變成 2024.03.04 08.33.38 這種寫法。這也順便回答了為什麼範本裡的時間分隔符號預設用點不用冒號。
檔案進清單有兩條路:按鈕開資料夾,或直接拖進視窗。拖一整個資料夾等同開資料夾,拖個別檔案就只載那幾個。清單會先過一道濾網,子資料夾、Windows 的 .lnk 捷徑、Unix 符號連結、macOS 的 Finder 別名、隱藏檔和系統檔都不會出現,避免把不該動的東西一起算進去。點選單一檔案時,側欄會顯示圖片或影片預覽、檔案大小與建立時間,以及解析出來的完整中繼資料,等於在改名前多一個核對拍攝資訊的地方。

EXIF 不是萬物都有。螢幕截圖、通訊軟體收到的壓縮圖、某些 App 存出的圖檔,裡面可能連拍攝時間都沒有。這些檔案丟進 Rename Photos 會怎樣,取決於兩個設定。
預設的模式是寬鬆處理:讀不到的變數,直接把變數名本身放進檔名。範本寫 {Date}-{Lens},遇到一張沒寫鏡頭資訊的手機照,輸出就是 2024.03.04 08.33.38-Lens.JPG,字面上的 Lens 三個字。這樣的檔名稱不上整齊,但它不會中斷整批工作。表格裡每列都有中繼資料狀態圖示,分成三種:資料完整、部分缺少、整個讀不到,滑鼠停上去會提示中繼資料不齊,具體缺哪些欄位要看側欄的欄位值。整理前先掃一眼圖示分布,大概就知道這批照片有幾成能改出乾淨檔名。
另一種是設定裡的嚴格模式,預設關閉。打開之後,凡是範本需要的資料不齊的檔案一律跳過不動,只改資料齊全的那些。要產出一致格式的檔名,這是該開的選項;代價是沒拍攝資料的檔案會被原封不動留下來,之後要自己想辦法。
第三個相關設定解決另一種情況:完全沒有 EXIF 的檔案,可以把日期來源切成檔案建立時間。截圖、下載圖這類檔案至少有建立時間可用,{YYYY}{MM}{DD} 這組日期變數就改吃檔案系統裡的時間戳。要注意這是整批切換:開了之後,有 EXIF 的照片日期也會改用建立時間,混合資料夾會得到兩種口徑,適合分批處理時用。寬鬆、嚴格、改抓建立時間,三條路對應三種檔案狀態,整理混合資料夾前先想好要走哪條。另外輸入框會記住最近五組用過的範本,成功的改名才會寫進歷史,臨時試打的字不會留下來,來回換範本時順手很多。
改名這種操作最怕改壞。Rename Photos 的設計是預覽先行:範本每改一個字,表格右欄立刻更新全部檔案的新檔名,確認無誤才按執行。連拍同一秒的多張照片會撞名,它會自動補上零填充的序號 _01、_02,大小寫視為同名,序號寬度跟著群組大小走,十張就是 _01 到 _10。
但有幾個行為,預覽欄不會特別跳出來警告,先知道才不會困惑。
副檔名最容易踩。範本產生的是主檔名,副檔名一律由程式接回原檔的。範本寫 archive,原檔 IMG_0001.JPG 會變成 archive.JPG。順著習慣在範本裡補了 .jpg,結果就是 archive.jpg.JPG,副檔名接了兩層。
禁字元的處理也相當安靜。Windows 檔名不允許 \ / : * ? " < > | 這九個字元,預覽產生時直接把這些字元拿掉,不會報錯。範本裡打了冒號想當分隔符號,輸出會發現冒號憑空消失,a:b 變成 ab。想用分隔符號,點號、減號、底線都安全。
資料夾深度則是另一個限制。打開資料夾只載入第一層的檔案,子資料夾不會遞迴進去。按月分資料夾存的相簿,要一層一層開著改。
執行階段的設計,官方維護文件 docs/core-logic.md 寫得比 README 詳細,值得對照著看。實際的改名分兩階段:每個檔案先改成帶毫秒時間戳的暫存名(例如 1712345678901_IMG_0032.JPG),全部暫存完成後再改成最終檔名。繞這一圈是為了處理互換:A 改成 B 的名字、B 改成 A 的名字,直接改會撞,先全部退到暫存名就沒有這個問題。
執行前還有一道預檢,檢查兩種佔用。目標檔名如果被這批要改的檔案自己佔用,沒關係,兩階段的設計會先騰出來;但如果是被清單外的檔案佔著,或是暫存名撞到了既有檔案,整批取消,一個都不動。改名進行中重複點按鈕也會被忽略,不會疊出第二輪操作。這個行為和預覽的死角直接相關:只拖了五個檔案進來,資料夾裡還有十個沒載入的,預覽看不到後者,但預檢看得到。結論很實際:要改就整個資料夾載入再改,不要挑幾個拖。
要誠實說的限制是:兩階段改名是檔案操作,不是交易系統。官方文件明講,若第二階段中途失敗,前面已改好的不會回滾;預檢撞名時錯誤會指明被佔用的路徑,但中途的檔案系統錯誤只會回報作業系統層的訊息,未必帶著檔名,剩下的要自己對照清單收尾。實務上先把改名前的檔名清單另存一份,是低成本的保險。
安裝檔的選擇比想像中齊:Windows 有 x64 的安裝版 exe 與 msi 兩種,macOS 同時出 Intel 與 Apple Silicon 的 dmg,Linux 有 deb、rpm 與免安裝的 AppImage。這個工具的信任問題可以從實體安裝檔回答。把 v1.0.2 的 macOS 安裝檔(4,605,704 bytes,README 稱 4MB 左右,相符)掛載起來檢視,內容是單一個 12.4MB 的 arm64 執行檔加圖示資源,最低系統需求 macOS 10.13。Rust 後端的依賴清單 Cargo.toml 裡沒有任何 HTTP 用戶端、沒有遙測、沒有分析套件,依賴就是 EXIF 解析、影片中繼資料解析、日期處理這幾類;把主程式丟進字串掃描,抓得到的網址只有框架的原始碼與問題追蹤連結,沒有任何遙測或資料上傳端點。照片讀取、改名、寫回全部在本機完成,這層「離線」是從依賴結構驗出來的,不是行銷文案。附帶一提,官網頁面本身有裝流量統計,但那是下載頁,與 App 無關。
維運節奏方面,專案 2024 年 5 月開源,作者 Arman Tang 一人維護,到 2026 年 9 月累積 375 個 star、15 個 fork,開啟中的 issue 是零。順帶一提,官網 rename.armantang.fun 只是個下載引導頁,四個下載按鈕全部連到 GitHub releases,沒有線上版可以用,所有處理都發生在桌面 App 裡。v1.0.0(2026 年 6 月)起把內建的自動更新檢查整組移除了,所以出新版要自己回 releases 頁抓,歷史安裝量也集中在那裡:1.0 之前的最後一版 v0.1.2 的 Windows 安裝包累積 867 與 461 次下載,v1.0.2 各平台合計約 140 次。小眾,但持續有人用。


macOS 使用者要先過一道關:安裝檔沒有經過 Apple 公證,簽章是 adhoc(沒有開發者團隊身分),第一次打開會跳「已損毀,無法打開」的警告。官方 README 對此沒有迴避,直接給出解除隔離標記的指令:
sudo xattr -dr com.apple.quarantine "/Applications/Rename Photos.app"
這條指令做的事是把下載檔案的隔離屬性拿掉,等於自己替這個安裝檔背書。它出現在官方文件裡,但要不要執行是信任決策:這是一個 4MB、單執行檔、原始碼全程可查的 MIT 專案,驗得起的人可以放心執行;不想碰這條指令的人,Windows 版的 msi 安裝包沒有這道關,頂多遇到 SmartScreen 對來路安裝包的例行提醒。
介面語言最後講:只有英文和簡體中文兩種,繁中介面不存在。瀏覽器或系統語系是 zh 開頭就自動進簡中。對台灣讀者來說,功能詞都看得懂,但「資料夾」「設定」這些字會以簡體字形出現,介意的人切英文版反而舒服。
站上先前介紹過的 OncePower 批次改名工具是另一條路線。它的重心在重排檔名裡已經有的字:比對、替換、保留、按位置擷取、加序號,日期命名也做得到但預設抓檔案建立時間。Rename Photos 剛好反過來,預設就從照片的 EXIF 拍攝時間出發,檔名裡原本有什麼字反而無所謂。平台也是分水嶺:OncePower 目前只出 Windows 安裝包,Rename Photos 三平台都有。兩個都是開源免費(OncePower 走 GPL-3.0,Rename Photos 是 MIT),授權寬鬆度有差但對一般使用都無感,真正的分界還是平台與檔名來源。Mac 用戶在這個比較裡幾乎只有一個答案,Windows 用戶則可以兩個都裝,規則改名與資料改名本來就會輪流用到。
照片裡的 EXIF 除了拿來改名,也是浮水印工具的資料來源,站上的 Copicseal 和 EXIF Frame 都在做同一件事的另一面:把拍攝資訊印在照片上。改檔名加浮水印,是整理相簿時常一起做的兩步。
Rename Photos 把「檔名應該說拍攝時間」這件事做到了最小可用:功能單一、全程離線、安裝檔輕、MIT 隨你改。代價是極簡帶來的毛邊,佔位字串、副檔名接兩層、整批取消不回滾,以及下載後的第一道系統警告。要批次整理的是幾千張有 EXIF 的照片或影片,它能安靜把事情做完;手上大多是截圖和無中繼資料的圖,先想清楚日期來源要抓哪一種再動手。