我有兩個批處理文件,這兩個簡單的命令運行結合時(退出ghostscript的。這兩種正常工作,如果我雙擊它們的圖標。我想將它們合併。批處理文件不會在批處理文件
第1部分看起來像這樣:(%1是從雷德曼傳入的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。蝙蝠。同樣的結果。
- 刪除所有變量除了%1(代碼反映了這一點)
- 把調用創建後立即打開不同的文件名:創建的唯一文件是原始temp_label.jpg
- 運行gswin64而不是gswin64c - 沒有毛刺報告,仍然沒有imagemagick代碼執行。
- 從cmd調用轉換,以確保我得到imagemagick的轉換,而不是別的。
我的假設是,由於imagemagick文件從未創建,因此無論是GhostScript結束還是使用我的imagemagick代碼都有問題。但是,我的imagemagick代碼正確執行。因此,我的猜測是GS沒有正常退出。我可能錯過了明顯的東西,任何幫助將不勝感激。
gswin64.exe是立即返回還是在完成後返回?我最初的懷疑是事情並行發生。 – GeekyDeaks
剛剛有另一個想法。 redrun.exe的環境是否正確設置PATH來查找轉換和複合?我注意到你已經指定了完整的路徑gswin64c.exe – GeekyDeaks
猜猜我們的意見越過。這是解決方案! 原來的評論:其實,他們是順序運行。但在檢查(使用開始/等待彈出多個框)時,我發現了這個問題 - 雖然我可以在命令行上鍵入convert並在獨立的批處理文件中執行它,並且100%的時間都會獲得imagemagick轉換,出於某種原因,它是調用Windows轉換可執行文件。 – Josiah