先把 excel 另存成 csv (test.csv),內容應該如下
檔案名稱,檔案位置
001.pdf,D:\AAA
002.pdf,D:\AAA
003.pdf,D:\BBB
再用下面的 bat 去處理
@echo off
For /F "skip=1 tokens=1,2,3 delims=," %%I in (.\test.csv) do (
if exist %%J\%%I (
echo.%%J\%%I exists
) else (
echo.%%J\%%I >> not-exists.txt
)
)
執行完 not-exists.txt
內容為
D:\AAA\001.pdf
D:\BBB\003.pdf
當然,如果只要檔名,那就將原始碼改為
@echo off
For /F "skip=1 tokens=1,2,3 delims=," %%I in (.\test.csv) do (
if exist %%J\%%I (
echo.%%J\%%I exists
) else (
echo.%%I >> not-exists.txt
)
)
如果想對 excel 直接操作,建議使用 python 或其他語言,批次檔這種東西比較適合讀純文字檔案。
或者也可以先寫一個批次檔將 excel 檔案先轉為 csv,再用另一個批次檔去處理 csv。總之方法有很多,就是不想直接用批次檔操作 excel 資料。
如果是python
1、先把你的pdf清單存成一個txt檔
2、python內容
import os
log = list()
with open("log.txt","wt",encoding="utf-8") as logfile:
with open("list.txt","rt") as filelist:
for ln in filelist:
l = ln.strip().split(' ')
# 整理讀進來的資料並拆成資料夾入及檔案名
file = l[0]
dir = l[-1]
targfile = os.path.join(dir,file)
if not os.path.exists(targfile):
logfile.write(f"找不到{targfile}\n")