- 締切済み
バックグラウンド実行完了を待つ方法
UNIXシェルスクリプトだと #!/bin/sh test1.sh & test2.sh & wait test3.sh などとしてtest1.shとtest2.shの両方をパラレルで実行してから 両方の完了を待って、test3.shを実行できますが、 これと同じようなことがWindowsのコマンドプロンプトで できないでしょうか。startを使えばバックグラウンドで 実行できることは分かったのですが複数の子プロセスの完了を 待つ、waitに対応するものが無くて困っています。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
古いスレッドを見ていませんでした。 startコマンド(/waitオプション使用)が使えるのではないでしょうか。 詳しくはコマンドプロンプトでのヘルプ、またはWebサイト参照。 余談ですが、whiteline507さんの場合は Windows環境でcygwinを使うのがいいような気がします。 (linuxコマンドがそのまま使えるので手っ取り早いと思います)
プログラミングについては、ここで説明するよりもWeb上の多くのサイトを参照するのがベターでしょう。(私も全てWeb上で独習しました。ツールもWeb上で無料で手に入ります。書籍や開発ソフトを買ったことはありません。) 「教えて!goo」にもプログラミングのスレッドがあります。 ほんの一例ですが、下記サイトは実例中心で解りやすいと思います。 「猫でもわかるプログラミング」 http://www.kumei.ne.jp/c_lang/ Windowsプログラム(GUI)、スクリプト(CUI)にしても、結局のところはマイクロソフトのMSDNサイトに尽きるのではないでしょうか。 「MSDN ホームページ」日本語サイト http://www.microsoft.com/japan/msdn/
お礼
確かに色々と勉強すれば分かることとは思うのですが、 期間が1,2週間と限られており、質問させていただきました。 コマンドプロンプトから簡単な方法で出来ないのであれば この期間で学習してすぐに使いこなすことは無理だと 思うのであきらめます。 教えていただいた関数?がコマンドプロンプトから 追加のソフトやバッチプログラム以外の言語無しに かけるのかどうかだけ教えていただければ幸いです。
ShellExecuteExの実行を WaitForSingleObjectで監視するという方法があります。 マイクロソフトサイトに詳しい説明があります。 ShellExecuteEx http://mtbeta.msdn.microsoft.com/ja-jp/library/aa923541.aspx?altlang=ja-jp WaitForSingleObject http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdllpro/html/_win32_waitforsingleobject.asp
補足
すみません、紹介していただいたコマンドはコマンドプロンプト から実行できるものなのでしょうか。 ページを見ると 「Winbase.h 内で宣言、Windows.h をインクルード」 「ヘッダー: Shellapi.h にあります。」 などと書いてありますが、WindowsOSにさらに 追加で何かのソフトを入れなければならないのであれば 必要ソフトについても教えていただけますでしょうか。 できればWindows(XPor2003)のみで行える方法があると 助かります。
補足
私も最初はstartコマンドの/waitオプションが使えると 思ったのですが、 start test1.bat /wait start test2.bat /wait start test3.bat としても結局test1.batの完了を待ってからtest2.batを実行開始 するのでダメでした。 (したいことはtest1.batとtest2.batを両方同時に実行して、 両方とも完了してからtest3.batを実行するというもの) また、cygwinも入れるには入れているのですが、やりたいことが 「Windowsコマンドの実行時間の計測」ですのでcygwinを介して コマンドを発行してしまうと正確なWindowsの処理速度が計測 できなくなってしまうので敢えて使っていません。 cygwin使ったとしても中身が「copy test1.txt test2.txt」などと 書かれたtest1.batをcygwinから実行することはできるのでしょうか。 cygwinの中でcp test1.txt test2.txtとしてしまうとWindowsの 処理性能が取れないのでNGだと考えています。 色々とお伝えしていないことがあり、申し訳ありませんが 何か名案がありましたら、よろしくお願いいたします。