这不是 Ghostscript 问题。如果你得到正确的参数,那么传递给 Ghostscript 的参数就是正确的,输出文件就是你想要的。
您还没有说出您尝试过的内容,因此很难提出建议。但是,您应该能够使用 %~dp1 和/或 %~n1 而不是简单地 %1 来扩展为仅路径或文件。还有其他变体,在 Windows 命令行中键入“帮助”将为您提供更多详细信息。
请注意,Ghostscript 始终不会压缩 PDF 文件,通过使用 -dPDFSETTINSG=/ebook,您正在生成一个全新的 PDF 文件,该文件已更改了原始内容(例如,图像将被下采样)。
另外,序列-c .setpdfwrite -f 已经冗余多年了,你不需要它。
[编辑]
此批处理文件演示了在批处理文件中使用命令 shell 变量扩展
@ECHO OFF
ECHO Input file is %1
ECHO Input directory is %~dp1
\ghostpdl\debugbin\gswin32c -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=%~dp1\new.pdf %1
当保存为 test.bat 然后 test d:\temp\input.ps 会生成以下输出:
Input file is d:\temp\input.ps
Input directory is d:\temp\
GPL Ghostscript GIT PRERELEASE 9.28 (2019-04-04)
Copyright (C) 2019 Artifex Software, Inc. All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
并且在目录 d:\temp 中创建了一个文件 new.pdf
所以变量扩展按预期工作,因为它发生在命令行执行之前。
如果它仍然不适合您,那么您将不得不提供更多信息。在你的位置,我将从命令行中删除 -dNOPAUSE 和 -dBATCH 开关开始,至少这样你就可以看到 Ghostscript 是否试图告诉你一些事情。