Ghostscript 批处理文件 - 执行并退出

Posted

技术标签:

【中文标题】Ghostscript 批处理文件 - 执行并退出【英文标题】:Ghostscript Batch file - execute and quit 【发布时间】:2012-07-31 17:25:39 【问题描述】:

我正在尝试在批处理文件中执行 GhostScript。

batch.bat

gswin32.exe ^
  -dNOPAUSE ^
  -sDEVICE=pdfwrite ^
  -sOUTPUTFILE=output1.txt ^
  -dBatch ^
   "file1.txt" "file2.txt"

gswin32.exe ^
  -dNOPAUSE ^
  -sDEVICE=pdfwrite ^
  -sOUTPUTFILE=output2.txt ^
  -dBatch ^
   "file1.txt" "file2.txt"

问题是当第一行执行时,它会打开 GhostScript 窗口。我必须手动键入退出或关闭窗口才能将控件返回给父级以批量执行下一个命令。 我们如何修改批处理文件以执行幽灵脚本?最初我使用 Process.Start(ProcessInfo) 从 C# 程序调用此文件。欢迎提出建议

【问题讨论】:

【参考方案1】:

    为避免 Ghostscript 打开窗口,请勿使用 gswin32.exe请改用 gswin32c.exe(名称中的 c是表示它仅用于控制台...)

    另外,请注意 文本 文件不能用作 Ghostscript 的输入。Ghostscript 只能处理 PostScript、Encapsulated PostScript 或 PDF 文件。

    您可以随意命名您的输出文件。但是您的-sDEVICE=pdfwrite 将产生 PDF 输出,因此如果您使用.pdf 后缀作为输出文件,建议您使用希望以后避免混淆。

    -dBATCH 的拼写区分大小写。-dBatch 无效。-dBATCH 导致 Ghostscript 在作业的最后一页完成后返回 - 否则它将切换到交互模式并显示其GS> 提示...它不是用于处理“批量输入文件”,如您所见假设。)

    批处理文件中的 2 个命令使用了相同的输入参数。 这意味着 2 个输出文件将相同,只是文件名不同。

我推荐使用以下命令行方案:

gswin32.exe ^
  -dNOPAUSE ^
  -dBATCH ^
  -sDEVICE=pdfwrite ^
  -sOUTPUTFILE=output2.pdf ^
   "file1.ps" "file2.pdf" "file3.eps"

【讨论】:

第 4 点 - 完美运行 - -dBATCH 的拼写区分大小写。 -dBatch 将不起作用。谢谢@Kurt【参考方案2】:

请改用gswin32c。这是一个控制台应用程序,不会创建您需要手动关闭的窗口。

【讨论】:

以上是关于Ghostscript 批处理文件 - 执行并退出的主要内容,如果未能解决你的问题,请参考以下文章

GhostScript 使用 bbox 裁剪 Postscript 文件

Windows批处理脚本在子文件夹中查找最大的PDF文件并使用Ghostscript和`pdftk`在页脚中打印路径

处理多个文件时 Ghostscript 出现致命错误

GhostScript 不可恢复的错误:未定义的文件名

编译时将字体添加到 Ghostscript 9.15

如何更改 Ghostscript 输出文件(在打印机后台处理程序中)