[[20080731140111]] 『BATファイル起動、処理待ち』(カクタス) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『BATファイル起動、処理待ち』(カクタス)

 こんにちは。よろしくお願いいたします。
 ↓のコードでBATファイルを実行しています。

 Dim bat As String
  bat = "D:\test\hoge.bat"
  CreateObject("Shell.Application").ShellExecute bat
  MsgBox "完了"

 BATファイルは、起動後、キーボードで"Y"か"N"を押したら
 処理をするようになっています。

 ただ、↑のコードだと、キーボードで"Y"か"N"を押す前に
 次の
 >MsgBox "完了"
 へ行ってしまします。
 BATファイルの終了を待って次の作業へいくにはどのように
 記述すればいいでしょうか?
 ご指導お願いいたします。

こんなのとかどうでしょうか?

Dim objShell, objExec

  Set objShell = CreateObject("WScript.Shell")
  Set objExec = objShell.Exec("c:\ping.bat")
  Do Until objExec.Status: DoEvents: Loop
  MsgBox "終わり"


 ご回答ありがとうございます。

 実行しましたら、
 >Set objExec = objShell.Exec("D:\test\hoge.bat")
 のところで

 実行時エラー '-2147024703 (800700c1)'
 D:\test\hoge.bat は有効な Win32 アプリケーションではありません。

 というエラーになってしまいます。
 コードは↓で試しました。

 Dim objShell, objExec 
  Set objShell = CreateObject("WScript.Shell")
  Set objExec = objShell.Exec("D:\test\hoge.bat")
  Do Until objExec.Status: DoEvents: Loop
  MsgBox "終わり"

 お手数ですが、再度のご指導お願いいたします。
 (カクタス)

 参考
Shellの処理待ち
http://hp.vector.co.jp/authors/VA033788/kowaza.html#0072


 再度のご指導ありがとうございます。
 ↓でいけました。ありがとうございました。

 Dim bat As String
  bat = "D:\test\hoge.bat"
  CreateObject("WScript.Shell").Run """" & bat & """", , True
 (カクタス)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.