none
コマンドの終了待ちをするには RRS feed

  • 質問

  • あるコマンドをforやforeachのようなループで繰り返し実行する際、バッチファイルで実行すると1回毎にコマンドの終了を待ってくれる(同期処理?)のですが、PSスクリプトで実行するとすぐに戻ってきてしまいます(非同期?)。

    バッチのようにコマンドの終了を待ってくれるようにできる方法はあるでしょうか。

    よろしくお願いします。

    2008年2月7日 5:39

回答

  • ma2ten さん

     

    exe などのコマンドでしょうか? でしたら out-null などにつなぐと終了まで処理を待ちます。

    > notepad.exe

    はすぐに戻ってきますが、

    > notepad.exe | out-null

    は、メモ帳が終了するまで戻ってきません。

    2008年2月7日 8:35
  • ma2ten さん

     

    Win32 の GUI アプリケーションが単独、またはパイプの最後にある場合は、起動直後に PowerShell から見てバックグラウンド処理となり、すぐにプロンプトが表示されます。

    一方、パイプの途中にある場合は、GUI アプリケーションの終了を待ちます。ですので、実は out-null でなくても、なんらかパイプでつながっていれば、終了待ちになります。

     

    詳細は PowerShell のアーキテクトのブログ記事をご参照ください。

    Managing Processes in PowerShell (英語)

    http://blogs.msdn.com/powershell/archive/2007/01/16/managing-processes-in-powershell.aspx

    2008年2月8日 7:43

すべての返信

  • ma2ten さん

     

    exe などのコマンドでしょうか? でしたら out-null などにつなぐと終了まで処理を待ちます。

    > notepad.exe

    はすぐに戻ってきますが、

    > notepad.exe | out-null

    は、メモ帳が終了するまで戻ってきません。

    2008年2月7日 8:35
  •  田辺茂也 - MSFT さんからの引用

    exe などのコマンドでしょうか? でしたら out-null などにつなぐと終了まで処理を待ちます。

    > notepad.exe

    はすぐに戻ってきますが、

    > notepad.exe | out-null

    は、メモ帳が終了するまで戻ってきません。

     

    exeコマンドのことです。

    教えていただいた方法で上手くできました。

    ありがとうございます。

     

    ちなみに何故これでそうなるのでしょうか?

    感覚的には逆に、out-nullが無いと終了待ちになって、付けるとスグに返ってくる、となりそうに思えるのですが・・・

    2008年2月7日 9:22
  • ma2ten さん

     

    Win32 の GUI アプリケーションが単独、またはパイプの最後にある場合は、起動直後に PowerShell から見てバックグラウンド処理となり、すぐにプロンプトが表示されます。

    一方、パイプの途中にある場合は、GUI アプリケーションの終了を待ちます。ですので、実は out-null でなくても、なんらかパイプでつながっていれば、終了待ちになります。

     

    詳細は PowerShell のアーキテクトのブログ記事をご参照ください。

    Managing Processes in PowerShell (英語)

    http://blogs.msdn.com/powershell/archive/2007/01/16/managing-processes-in-powershell.aspx

    2008年2月8日 7:43
  • こんにちは。フォーラムオペレータの栗原麻里 です

     

    ma2ten さん、フォーラムのご利用ありがとうございます。

    情報はお役に立ちましたでしょうか?

     

    今回、マイクロソフト社員の回答ではございますが、皆様の役に立つ情報だと思いましたので
    チェックを付けさせていただきました。

     

    回答済みチェックが付くことにより、フォーラムをご利用していただいている皆様が、有用な情報を
    見つけやすくなります。
    回答された情報が有用だと思われましたら、ぜひ回答済みボタンを押してチェックを付けてくださいね!

     

    ma2ten さんはチェックを解除することもできますので、ご確認ください。

     

    それでは、ぜひまたご活用ください!

    2008年4月21日 5:59