2012-07-13 48 views
2

我有一個powershell腳本,可能會非常粗略地由以下代表。調用一個批處理文件並等待它完成

function startTask 
{ 
    calls external batch script (runs for roughly 10 minutes) 
    creates done1.txt 
} 
function startTask2 
{ 
    calls batch (runs for roughly 10 minutes) 
    creates done2.txt 
} 
startTask 
if done1.txt exists 
startTask2 
if done2.txt exists 
write-host "done" 

我現在面臨的問題是,調用第一批文件後立即將第二批文件被調用。有沒有辦法讓powershell知道批處理文件何時完成?注意,我沒有訪問批處理文件的權限,所以我無法編輯它

+5

使用'啓動Process' cmdlet來'Wait'切換 – 2012-07-13 14:34:19

+0

我想過使用的等待。批處理文件可能需要3到20分鐘之間的任何時間。我使用wait的問題是這保證腳本將花費很長時間才能完成。 – mhopkins321 2012-07-13 14:42:54

+0

'wait'將確保完成,您將能夠逐個順序地調用腳本。但是,這不會是一個開銷。這一切都取決於腳本的執行時間,無論如何也不會影響「等待」。 – 2012-07-13 14:47:17

回答

0

而不是從每個任務編寫一個文本文件,我建議您只使用帶有錯誤/退出代碼的try-catch :

一個例子:

## D:\Scripts\Temp\exit.ps1 ## 
try{ 
    $null.split() 
} 
catch 
{ 
    exit 34 
} 

exit 2 
############################# 

# launch powershell from cmd 
C:\> powershell -noprofile -file D:\Scripts\Temp\exit.ps1 
C:\>echo %errorlevel% 
34 
相關問題