我一直在研究這個Windows批處理文件,以減小一個目錄(「C:\ BigPDFs」)中所有PDF文件的大小,並將它們移動到不同的目錄( 「C:\ SmallPDFs」)使用Ghostscript。 Ghostscript的偉大工程,但我遇到的問題是在Windows批處理文件腳本:Windows批處理文件縮小PDF文件大小
for /R "%1" %%f in (*.pdf) do (
SET outfile=%2\%%~nf%%~xf
gswin32c.exe -sDEVICE=pdfwrite -dMaxSubsetPct=100 -dPDFSETTINGS=/ebook -sOutputFile=%outfile% -dNOPAUSE -dBATCH "%%f"
)
的 「C:\ BigPDFs」 目錄中有四個文件:
- TEST1.pdf( 5頁)
- TEST2.pdf(9頁)
- TEST3.pdf(9頁)
- TEST4.pdf(4頁)
我期待它將相同的四個壓縮文件寫入「C:\ SmallPDFs」目錄,但唯一寫的是「TEST4.pdf」。看來%outfile%變量總是解析爲「C:\ BigPDFs」目錄(「TEST4.pdf」)中的最後一個文件名,即使它正在按順序處理所有四個文件。我知道它處理所有四個文件的原因是因爲Ghostscript輸出顯示「處理頁面1到5」,接着是「處理頁面1到9」,「處理頁面1到9」,然後最終「處理頁面1到4 」。
爲什麼變量總是會解析爲最後一個文件(「TEST4.pdf」)?有沒有辦法捕獲它正在處理的「當前」文件名並將其存儲在一個變量中,以便它在運行Ghostscript時保留「當前」文件名?
他們都工作。你是男人!非常感謝你。 –