情境:從近千張學生照片中,只保留「已報到且本地就讀」者
照片以身分證字號命名,存放於 `E:\電子照片`。依據 `新生登記表.xls` 的身分證清單篩選,手動搜尋刪除太慢。解法:DOS 導出檔名 → Excel 比對 → 批次檔刪除,三步搞定。
步驟一:取得所有檔名清單
- 開啟資料夾,網址列輸入 `cmd`(Win7 直接輸入 `cmd`)開啟命令提示字元。
- 輸入指令:
DIR /O /B > LIST.TXT,按 Enter。所有檔名寫入 `LIST.TXT`。
- 開啟 `LIST.TXT`,使用「取代」功能(Ctrl+H)將所有 `.jpg` 移除,僅留身分證字號。

步驟二:Excel VLOOKUP 比對,產出刪除清單
- 開啟 `新生登記表.xls`。將 `LIST.TXT` 內容全選複製,貼到新工作表 A 欄(先將 A 欄設為「文字」格式,避免科學符號)。
- B1 輸入公式:
=VLOOKUP(A1,[新生登記表.xls]sheet1!$A:$A,1,0),雙擊填充柄向下複製。
- 對 B 欄做「遞增排序」,`#N/A` 即為「不在登記表中」的身分證號。
- 選取所有 `#N/A` 對應的 A 欄資料,複製到新工作表 A 欄。
- C1 輸入
=A1&".jpg" 還原檔名;B1 輸入 `del` 並向下複製。

步驟三:批次檔一鍵刪除
- 複製 B、C 兩欄內容 → 貼到記事本 → 另存為 `del.bat`(存檔類型選「所有檔案」),放入 `E:\電子照片`。
- 雙擊 `del.bat` 執行,系統自動刪除所有不符合條件的照片,剩下的即為需保留檔案。
⚠ 提醒:`del` 指令刪除的檔案不進資源回收筒,無法還原,執行前請確認備份或三思。
核心邏輯回顧
- DIR /B /O:裸列檔名、排序輸出。
- VLOOKUP 精確比對:第四參數 `0` 關鍵,找不到回傳 `#N/A`。
- 批次檔自動化:將大量刪除指令集中執行,避免手動逐一確認。
此法不僅適用照片篩選,任何「依名單保留/刪除大量同名異檔」場景皆可套用。