2016-07-20 147 views
1

我正在從perl腳本調用bat文件。
由於bat文件需要很長時間才能執行,因此perl腳本不會等待bat文件完成並繼續從下一行開始執行。Perl腳本不會等待.bat文件完成並繼續執行

有沒有一種方法可以暫停執行perl腳本,直到bat文件完成執行,然後在bat文件完成後再恢復。

我寫了這樣的事情:

system ("start $bat_file"); 
print ("Hello"); 

所以打印Hello bat文件結束之前就。

其實我想做到的是:

  1. 我的bat文件創建一些文件
  2. 我想一旦bat文件做是爲了將這些文件複製到另一個位置。

但是,因爲它不等待bat文件完成,所以複製失敗,因爲它試圖複製一個不存在的文件夾,因爲bat文件仍在處理中,並且沒有生成輸出文件。

注意:完成bat文件的時間不固定,每次都會更改。

+2

影響你使用'system','exec','qx'或反引號'\''? – simbabque

+1

是的,有。但這取決於你在做什麼。爲此,我們需要一些代碼示例。 – Sobrique

+0

是的,我用過系統。 我寫了這樣的: system(「start $ bat_file」); –

回答

9

您需要刪除start命令

沒有/wait選項,start會創建一個流程並立即返回

但是根本不需要start。你可以寫只是

system($bat_file); 

以達到你要求

+0

它工作。謝謝你的幫助。 –

2

,你必須與start command的問題,而不是與system

當你在Windows上使用start命令時,將啓動程序,但不會等待結束的問題。

你有start
在您的代碼後使用/wait這將是:

system ("start /wait $bat_file"); 
print ("Hello");` 

Start Manual

+1

根本無法使用'start'。 – Borodin

+1

當我使用您提到的代碼時,即使bat文件完成後,調用也不會返回給調用者。它只是保持暫停狀態,並且在bat文件完成後從不恢復操作。 但是,如果我編寫系統($ bat_file),它正在工作; –

相關問題