dポイントプレゼントキャンペーン実施中!

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

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

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

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

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

A 回答 (2件)

ws.run("tmp.bat",1,1);


としてみて下さい。
3つめの引数が0以外の時終了待ちします。
    • good
    • 1
この回答へのお礼

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

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

お礼日時:2006/05/23 00:54

簡単な方法として


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

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

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

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

お礼日時:2006/05/23 09:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!