2014-06-30 314 views
2

我有兩個批處理文件,這兩個簡單的命令運行結合時(退出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」。但就像我提到的那樣,如果我分開運行它們,它們就會起作用。

我已經試過:

  1. 添加和消除-dBATCH等。從參數傳遞給GhostScript
  2. 把命令之間的暫停,讓時間運行,使用ping方法
  3. 保持文件分開,並從一個單一的文件調用它們,即1.bat調用2.bat和3。蝙蝠。同樣的結果。
  4. 刪除所有變量除了%1(代碼反映了這一點)
  5. 把調用創建後立即打開不同的文件名:創建的​​唯一文件是原始temp_label.jpg
  6. 運行gswin64而不是gswin64c - 沒有毛刺報告,仍然沒有imagemagick代碼執行。
  7. 從cmd調用轉換,以確保我得到imagemagick的轉換,而不是別的。

我的假設是,由於imagemagick文件從未創建,因此無論是GhostScript結束還是使用我的imagemagick代碼都有問題。但是,我的imagemagick代碼正確執行。因此,我的猜測是GS沒有正常退出。我可能錯過了明顯的東西,任何幫助將不勝感激。

+0

gswin64.exe是立即返回還是在完成後返回?我最初的懷疑是事情並行發生。 – GeekyDeaks

+1

剛剛有另一個想法。 redrun.exe的環境是否正確設置PATH來查找轉換和複合?我注意到你已經指定了完整的路徑gswin64c.exe – GeekyDeaks

+0

猜猜我們的意見越過。這是解決方案! 原來的評論:其實,他們是順序運行。但在檢查(使用開始/等待彈出多個框)時,我發現了這個問題 - 雖然我可以在命令行上鍵入convert並在獨立的批處理文件中執行它,並且100%的時間都會獲得imagemagick轉換,出於某種原因,它是調用Windows轉換可執行文件。 – Josiah

回答

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%確保您正在運行正確的可執行文件。

+0

謝謝 - 就是這樣。我沒有意識到打印後臺處理程序會具有與其他程序不同的PATH。看起來,它可能仍然可以訪問「常規」PATH(因爲我可以在不寫出路徑的情況下獲得複合),但也許它們的順序不同,如此處所示:[鏈接](http:// www。 imagemagick.org/discourse-server/viewtopic.php?f=1&t=19679) – Josiah

+0

我認爲你很可能是對的。如果您感覺好奇,可以在批處理文件中回顯%PATH%'並將其與CMD中的值進行比較。我覺得這有點好笑,因爲我不是很喜歡窗戶,但是這同樣的問題在unix下一年一次的時候會讓我b me不安,因爲我開始用cron來沾沾自喜:) – GeekyDeaks

+0

回覆路徑的好思想是一樣的太長時間才能在這裏發佈)。很高興聽到這不是一個雙贏的問題。 :P – Josiah