ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. 並列処理の話(その2) Windowsでコマンドを並列実行する(後編)

並列処理の話(その2) Windowsでコマンドを並列実行する(後編)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

前回は、STARTコマンドでコンソールコマンドを並列動作させる方法を解説しました。

並列処理の話(その2) Windowsでコマンドを並列実行する(前編)

今回は、複数並列動作させたコマンドの終了待ちをする方法を解説します。
起動されたコマンドは、Windows内でプロセスという単位で実行されています。プロセスが動作中かどうかを判断するためには、プロセスIDが必要です。しかし、STARTコマンドは起動したプロセスのプロセスIDを返してくれません。
そこで、Windowsに標準装備されている「WMI:Windows Management Instrumentation」という機能を使用します。WMIを制御するコマンドは「wmic」です。
起動してみましょう。

C:Usersosuga>wmic process create “tree.com c:”
(Win32_Process)->Create() を実行しています
メソッドが正しく実行しました。
出力パラメーター
instance of __PARAMETERS
{
ProcessId = 1780;
ReturnValue = 0;
};
  • treeコマンドはEXEではなくCOMなので、「tree」だけでは動きません。
  • 「tree.com c:」をひとかたまりのパラメータとしてwmicに認識させるため、ダブルクォートで括ってやります。

正常に起動された場合、ProccessIdが表示され、ReturnValueは0になります。

次に、このProcessIdが稼働中かどうかチェックします。

C:Usersosuga>wmic process where ROCESSID=1780) GET Caption
利用できるインスタンスがありません。

うっかりしている間にコマンドが終わってしまったようです。

今度はtree実行中に急いでコマンドを打ちます。

C:Usersosuga>wmic process create “tree.com c:”
(Win32_Process)->Create() を実行しています
メソッドが正しく実行しました。
出力パラメーター
instance of __PARAMETERS
{
ProcessId = 12868;
ReturnValue = 0;
};

C:Usersosuga>wmic process where (PROCESSID=12868) GET Caption
Caption
tree.com
  • 「GET Caption」がないと、いろんな情報がたくさん出て来てしまうので、Caotion(コマンド名)だけを表示するようにします。

Captionというカラムにtree.comというコマンド名が表示されました。どうやら、Captionという文字列が表示されればプロセスは生きていると考えて良さそうです。
この実験の結果から、バッチを作成してみましょう。

それでは、新しいバッチファイルを作成し、次の文を入力してください。

C:Usersosuga>notepad tst2.bat

コピー用テキストはこちら

実行すると、tree.comが終了するまでうまく待ってくれているようです。
しかし、この方法では、複数のプロセスを待てないので、もう一ひねりして、複数のプロセスを待つようにします。

コピー用テキストはこちら

プロセスの存在チェックでプロセスIDだけを表示し、合致するものがある間はループを続けるようにしました。(この場合、DELIMSは必要ないですね)
一つ目と二つ目のプロセスが直書きで、ちょっとダサいですが、実行できることはわかっていただけると思います。
この方法の唯一の問題点は、実行コマンドの終了コードが取得できないということです。

さて、ちょっとオマケなのですが、このWMICというコマンド。
パラメーターに「/NODE:”192.168.10.1”」というように別のマシンのIPアドレスかマシン名を入れると、リモートでのプロセス実行と終了監視ができます。実行ユーザーの権限などまだ考慮することはありますが、Unixのrshellのような事ができるので、試してみたらいかがでしょうか。


関連コンテンツ

並列処理の話(その1) ~変換処理の並行動作について(前編)~

並列処理の話(その1) ~変換処理の並行動作について(後編)~

並列処理の話(その2) Windowsでコマンドを並列実行する(前編)

並列処理の話(その3) 並列処理の種類

並列処理の話(その4) ハイパースレッディング・テクノロジー

追記:Waha! Transformer 製品サイトの関連コンテンツ

Waha! Transformer の動作プラットフォーム


データの抽出や加工、連携にお悩みではありませんか?

20年以上の実績に裏打ちされた信頼のデータ連携ツール「Waha! Transformer」で、自社に眠るデータを有効活用。まずは無料のハンズオンセミナーや体験版で効果を実感していただけます。

> 純国産ETLツール「Waha! Transformer」

Waha! Transformer
メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ