批处理文件在组合时不会运行(在批处理文件中退出ghostscript)

时间:2014-06-30 22:10:19

标签: 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中得到了一条消息:#34; ... temp_label_resize.jpg无法找到。"但就像我提到的那样,如果我单独运行它们,它们就会起作用。

我尝试过的事情:

  1. 添加和删除-dBATCH等。从传递给GhostScript的参数
  2. 在命令之间暂停,以便使用ping方法运行时间
  3. 保持文件分离并从单个文件中调用它们,即1.bat调用2.bat和3.bat。结果相同。
  4. 删除除%1以外的所有变量(代码反映了这一点)
  5. 在创建后立即调用打开不同的文件名:创建的​​唯一文件是原始temp_label.jpg
  6. 运行gswin64而不是gswin64c - 没有报告毛刺,仍然没有执行imagemagick代码。
  7. 从cmd调用转换,以确保我获得了imagemagick的转换而不是别的。
  8. 我的假设是,由于从未创建过imagemagick文件,因此GhostScript结束或使用我的imagemagick代码时会出现问题。但是,我的imagemagick代码正确执行。因此,我的猜测是GS没有正常退出。我可能错过了一些明显的东西,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

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

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

etc..etc ..

通过这种方式,您可以100%确定您运行的是正确的可执行文件。