我一直在研究这个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时保留“当前”文件名?
他们都工作。你是男人!非常感谢你。 –