2017-04-05 52 views
0

我想執行一個Powershell文件,它需要執行批處理文件,一旦批處理文件處理完成,然後只進行下一個命令而且,批處理過程不應該打開一個新窗口。在執行其他命令之前等待批處理文件在Powershell中完成處理?

$p = Start-Process $dir\bin\stop.bat -Wait -Passthru 
$p.WaitForExit() 
if ($p.ExitCode -eq 0) { 
     java "-Dtar.memoryMapped=true" -Xms8g -Xmx8g -jar oak-run-1.4.6.jar checkpoints $dir\repository\segmentstore | Out-File $log_path\log_checkpoints.txt } 

我試過上面的代碼,但它不工作。

+0

請比「它不工作」更具體。你期望發生什麼?究竟發生了什麼? –

+0

一旦bat文件進程完成,那麼只應執行下一個命令。但是,即使在批處理完成之前它仍在執行,導致第二個命令不成功。 –

回答

0

您可以使用此等待批處理文件來完成(在同一窗口):

start $dir\bin\stop.bat -Wait -NoNewWindow 

你能,如果它仍然無法正常工作更具體?

+0

我會讓你知道答案。 –

0

Start-Process非常簡單,-Wait-NoNewWindow參數符合您的預期。只能使用`-PassThru'來獲取之後需要查詢的對象。

FYI & path 2>&1也將等待執行,並將必要的錯誤流重定向到控制檯。

相關問題