WSHで他のバッチを呼びその終了を待つ方法

WSHでプログラミングをしています。
WSHを使う理由はWin上から簡単にメールを送信できるのでとりあえず選択しました。

で、WSHのバッチから、普通のDOSコマンドで記述したバッチを呼んで、そのバッチの結果出力されたログファイルをWSHのバッチでメールに添付して送信したいなどと思っています。

今は
var ws = WScript.CreateObject("Wscript.Shell");
ws.run("tmp.bat");
こんな感じで「tmp.bat」という名のDOSコマンドのバッチを呼び出しているのですが、このコマンドは命令発行したらその命令が終了するのを待たず次の命令に進んでしまうようです。

なので、ログ作成とメール送信のタイミングが合わない状態です。

処理待ちする方法を教えてください。よろしくお願いします。

投稿日時 - 2006-05-22 18:57:19

QNo.2168093

暇なときに回答ください

質問者が選んだベストアンサー

ws.run("tmp.bat",1,1);
としてみて下さい。
3つめの引数が0以外の時終了待ちします。

投稿日時 - 2006-05-22 19:29:00

お礼

第3引数がtrueというのが一般的のようですね。
少し調べたらでてきました…少しは調べてから質問しろよと言う感じですね、お恥ずかしいです。

でも、整数でもいいのですね。
参考になりました。ありがとうございました。

投稿日時 - 2006-05-23 00:54:18

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

ANo.2

簡単な方法として
1.一番初めに P.TXT などというテキストファイルを作成しておく。
2.tmp.batの最後でP.TXTを消す。
3.P.TXTがなくなればtmp.batの処理が終了したと判断できる。

投稿日時 - 2006-05-22 19:30:18

お礼

挙げていただいた方法を、今回私の質問する環境に当てはめたとすると、ファイルの存在をファイルがなくなるまで無限ループさせるということになるのですね。タブン。

そうするとパフォーマンスが非常に悪いように思えます。今回のケースには適さないように思いました。

しかしありがとうございました。

投稿日時 - 2006-05-23 09:51:58

あなたにおすすめの質問

[PR] お役立ち情報