4

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

批处理文件

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# 程序调用此文件。欢迎提出建议

4

2 回答 2

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

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

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

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

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

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

gswin32.exe ^
  -dNOPAUSE ^
  -dBATCH ^
  -sDEVICE=pdfwrite ^
  -sOUTPUTFILE=output2.pdf ^
   "file1.ps" "file2.pdf" "file3.eps"
于 2012-07-31T18:46:45.930 回答
1

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

于 2012-07-31T18:45:17.173 回答