windows - 合并时批处理文件不会运行(在批处理文件中退出 ghostscript

标签 windows batch-file cmd imagemagick ghostscript

我有两个批处理文件,都是简单的命令。如果我双击它们的图标,两者都可以正常工作。我想合并它们。

第 1 部分如下所示:(%1 是来自 RedMon 的传入 PostScript)

"c:\program files\gs\gs9.14\bin\gswin64c.exe" -dBATCH -dNOPAUSE -dSTRICT -dSAFER -sDEVICE=jpeg -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -o "c:\path\temp_label.jpg" %1

第 2 部分如下所示:

convert -quality 99 -density 300 -crop 1240x1760+110+100 -chop 0x200+0+900 -rotate 90 "c:\path\temp_label.jpg" "c:\path\temp_label_edit.jpg"

composite -gravity center "c:\users\mary\documents\labels\temp_label_edit.jpg" "c:\path\new_shipping_label.jpg" "c:\path\temp_label_small.jpg"

convert -quality 99 -density 300 -resize  3059 "c:\path\temp_label_small.jpg" "c:\path\temp_label_resize.jpg"

imdisplay /p "c:\path\temp_label_resize.jpg"
mspaint "c:\path\temp_label_resize.jpg"

第 1 部分是一个 ghostscript 命令,它只是从传入的 postscript 生成一个 jpg 文件。当我打印并且工作正常时,它由 RedMon(使用 redrun.exe)调用。第 2 部分是 imagemagick,它裁剪图像,将其添加到另一层,并将结果显示为文件并将其定向到另一台(真实的)打印机。

当我只运行第一部分时,它会在我打印时自动给我文件。如果我双击第 2 部分的图标,它就会工作。但我想做的是让它们从单个批处理文件运行,因为我们每天至少运行 12 次。

它的作用:当我合并这两个批处理文件时,GS 中的原始文件会正确生成。但随后我从 imdisplay 和 paint 收到消息“...找不到 temp_label_resize.jpg”。但就像我提到的,如果我单独运行它们,它们就可以工作。

我尝试过的:

  1. 添加和删除 -dBATCH 等。来自传递给 GhostScript 的参数
  2. 使用 ping 方法在命令之间暂停,以便有时间运行
  3. 将文件分开并从单个文件调用它们,即 1.bat 调用 2.bat 和 3.bat。同样的结果。
  4. 删除除 %1 之外的所有变量(代码反射(reflect)了这一点)
  5. 创建后立即调用打开不同的文件名:唯一创建的文件是原始的 temp_label.jpg
  6. 运行 gswin64 而不是 gswin64c - 没有报告故障,仍然没有执行 imagemagick 代码。
  7. 从 cmd 调用 convert 以确保我得到的是 imagemagick 的 convert 而不是其他东西。

我的假设是,由于从未创建 imagemagick 文件,因此 GhostScript 结尾或我的 imagemagick 代码存在问题。但是,我的 imagemagick 代码执行正确。因此,我的猜测是 GS 没有正确退出。我可能遗漏了一些明显的东西,我们将不胜感激。

最佳答案

redrun.exe 的 PATH 环境变量似乎与您启动命令提示符时的环境变量不一样。我建议您完整指定每个命令的路径,类似于您为 gswin64c.exe 所做的,例如

"c:\program files\gs\gs9.14\bin\gswin64c.exe" ....
"c:\program files\ImageMagick\bin\convert.exe" ....

等等等等

这样您就可以 100% 确定您正在运行正确的可执行文件。

关于windows - 合并时批处理文件不会运行(在批处理文件中退出 ghostscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24499720/

相关文章:

c++ - 数字生成器性能 linux vs windows

windows - 批量 IF 变量比较神秘地不起作用

windows - 仅使用批处理文件修剪前导斜线

batch-file - 将文件读入数组并写出 block

windows - 从 Jenkins 运行批处理文件挂起并且不返回到 Jenkins 作业

c - Windows 的适当 ansi c 示例是什么?

windows - 如何 "echo"批处理文件中的变量?

batch-file - 从批处理文件返回控制权

Windows 批处理脚本应该在某个时间间隔运行

c - 我想运行一个可执行文件并从文本文件中获取输入,然后在 Windows cmd 中写入输出