我有两个批处理文件,都是简单的命令。如果我双击它们的图标,两者都可以正常工作。我想合并它们。
第 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”。但就像我提到的,如果我单独运行它们,它们就可以工作。
我尝试过的:
- 添加和删除 -dBATCH 等。来自传递给 GhostScript 的参数
- 使用 ping 方法在命令之间暂停,以便有时间运行
- 将文件分开并从单个文件调用它们,即 1.bat 调用 2.bat 和 3.bat。同样的结果。
- 删除除 %1 之外的所有变量(代码反射(reflect)了这一点)
- 创建后立即调用打开不同的文件名:唯一创建的文件是原始的 temp_label.jpg
- 运行 gswin64 而不是 gswin64c - 没有报告故障,仍然没有执行 imagemagick 代码。
- 从 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/