在for循环中使用Ghostscript

时间:2016-02-05 09:31:09

标签: batch-file pdf ghostscript

我需要将数百个pdf文件合并为一个新的大文件。在这段代码中,我尝试遍历文件顺序列表并将它们添加到新的pdf文件中。 但结果不是我需要的,因为只有循环中的最后一个pdf文件被复制到output.pdf中。我的代码有什么问题?

for /F "tokens=*" %%A in (fileorder.txt) do (
 echo +++++ %%A ++++++
 D:\GS\gs9.02\bin\gswin32c.exe ^
    -o output.pdf ^
    -sDEVICE=pdfwrite ^
    -dColorConversionStrategy=/LeaveColorUnchanged ^
    -dEncodeColorImages=false ^
    -dEncodeGrayImages=false ^
    -dEncodeMonoImages=false ^
    output.pdf ^
    %%A ^
    -dFIXEDRESOLUTION
pause
) 

1 个答案:

答案 0 :(得分:0)

所以我找到了自己的解决方案: 使用此代码,我创建一个空的temp.pdf,我需要将最后一个循环的输出保存到我​​的输入文件。

copy NUL EmptyFile.txt
ren EmptyFile.txt temp.pdf
for /F "tokens=*" %%A in (fileorder.txt) do (

D:\GS\gs9.02\bin\gswin32c.exe ^
-o output.pdf ^
-sDEVICE=pdfwrite ^
-dColorConversionStrategy=/LeaveColorUnchanged ^
-dEncodeColorImages=false ^
-dEncodeGrayImages=false ^
-dEncodeMonoImages=false ^
temp.pdf ^
%%A ^
-dFIXEDRESOLUTION

copy /b/v/y output.pdf temp.pdf

) 

del temp.pdf

但正如rojo指出:这是更好的解决方案:

D:\GS\gs9.02\bin\gswin32c.exe ^
-o output.pdf ^
-sDEVICE=pdfwrite ^
-dColorConversionStrategy=/LeaveColorUnchanged ^
-dEncodeColorImages=false ^
-dEncodeGrayImages=false ^
-dEncodeMonoImages=false ^
@fileorder.txt ^
-dFIXEDRESOLUTION