【发布时间】:2015-03-01 05:14:03
【问题描述】:
我有几个(数千个)多页 PDF 文件,我正在尝试使用 Ghostscript 将它们转换为 JPEG 文件(每个 PDF 的每一页一个文件)。我有以下批处理文件,但无法正常工作。
for %%f in (*.pdf) do (
gswin64.exe -dNOPAUSE -dBATCH -sDEVICE=jpeg -r144 -sOutputFile=p%03d.jpg %%f
)
在打开文件的意义上,循环似乎工作正常。 “p%03d.jpg”出错了——我猜循环看到了“%0”,并且由于某种原因插入了批处理文件的名称。我收到以下错误:
**** Could not open the file pC:\Users\bmjones\Downloads\convert.bat3d.jpg
(“convert.bat”为批处理文件名)
我猜即使我让这个工作,我也会遇到另一个问题。当我手动运行时:
gswin64.exe -dNOPAUSE -dBATCH -sDEVICE=jpeg -r144 -sOutputFile=p%03d.jpg [file name].pdf
它工作正常。我得到一组文件名 001.jpg、002.jpg 等。但我希望它们的编号不同。所以,如果我的前两个文件分别有 3 页和 2 页,我希望得到如下内容:
f1_pg1.jpg、f1_pg2.jpg、f1_pg3.jpg、f2_pg1.jpg、f2_pg2.jpg
【问题讨论】:
-
所以
gswi64.exe在-sOutputFile参数中使用百分号作为通配符?如果您从.bat脚本执行此操作,您可能需要双泵%以便将其视为文字百分号,而不是脚本参数或变量。试试-sOutputFile=p%%03d.jpg -
@rojo 很好用,谢谢!我仍然需要找到一种方法来更改循环的每次迭代中的文件头,这样我就不会覆盖文件,但这是很好的第一步。
标签: batch-file pdf for-loop type-conversion ghostscript