如果我有一些.eps
文件pic00.eps
,例如pic01.eps
,,...然后在 Linux 上我.png
通过运行以下命令将它们转换为文件:
gs -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png16m -r600 -sOutputFile=pic%02d.png pic*.eps
我刚刚在 Windows 10 上尝试过(使用gswin64c
而不是gs
),但不起作用。错误信息如下:
pic*.eps 是未定义的文件名。
Windows 上的命令是什么?
答案1
这在 Linux 中有效,因为你的 shell(可能bash
)正在将扩展*.eps
为完整的 epses 列表前ghostscript 可以获取任何内容。在 Windows 中,shell 不会为您执行此操作。
在 Powershell 中,我会这样做:
$names = (dir *.eps).name
gswin64c -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png16m -r600 '-sOutputFile=pic%02d.png' $names
我还对参数进行了单引号处理,-sOutputFile
以防 PowerShell 在处理百分号时遇到问题。
在 cmd 批处理中,我会执行以下操作:
for %%i in (*.eps) do (
gswin64c -dSAFER -dBATCH -dNOPAUSE -dEPSCrop -sDEVICE=png16m -r600 "-sOutputFile=%%i.pic%02d.png" %%i
)
这与 Linux 和 Powershell 的做法不同,因为每个 EPS 都会触发单独的 ghostscript 执行。这通常是可以的;使用一个 EPS 作为另一个 EPS 的前导码是相当不常见的。
我还在 PNG 文件名前面加上了 eps 名称,因为页数计数器将为每个 EPS 文件重置,并且您不希望第一个 EPS 中的 pic01.png 被第二个 EPS 破坏。