2012-07-13 106 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 
相关问题