2017-03-21 3 views
1

私は、コマンドラインファイル(MyTestRepo.cmd)に次のコード(作品)を使用したTortoiseGitリポジトリを更新しています:cmd.exeが終了するのに十分な時間停止する方法はありますか?

$TestPull = Start-Job { Invoke-Item C:\MyTests\MyTestRepo.cmd } 
Wait-Job $TestPull 
Receive-Job $TestPull 
:私は、次のコードを使用してこのファイルを呼び出していPowerShellで

cd c:\MyTortoiseGitRepo 
git.exe pull --progress -v --no-rebase "origin" 

上記のコードは機能しますが、CMDファイルが実行を終了し、cmd.exeを終了して終了して次のコード行に移動するまで待機していません。

移動する前にcmd.exeプロセスが完了するのを待つより良い方法はありますか?

+0

'Start-Job'は使用しないでください。 'C:\ MyTests \ MyTestRepo.cmd'と入力してEnterを押してください。 PowerShellはスクリプトを実行し、スクリプトが完了するのを待ちます。 –

+0

@Bill_Stewartパスに空白が含まれていて引用符を付ける必要がある場合にだけ、コールオペレータの使用をお勧めします。++おそらく彼が仕事をしている理由があります。 cmdを起動してからそれを待っている間に何かを実行してください。 –

+0

あなたは試してみましたか?Start-Jobの中にいらっしゃいましたか? –

答えて

2

Invoke-Itemは待機をサポートしていません。コールオペレータ&を使用することができます。例:

$TestPull = Start-Job { & "C:\MyTests\MyTestRepo.cmd" } 

またはStart-Process -Wait:スクリプトがユーザーによってexcecutedされたときに

$TestPull = Start-Job { Start-Process -FilePath "C:\MyTests\MyTestRepo.cmd" -Wait } 

Start-Processに、cmd-ウィンドウが表示されます。これは、- NoNewWindow`を追加することで抑止できます。

+1

私はコールオペレータ( '&')を好むでしょう。 –

+0

私は同意しますが、待っていたのを覚えていませんでした。更新された答え+1 –

+1

'-NoNewWindow'スイッチを追加することでウィンドウを抑制することができます。 –

関連する問題