リファレンス、WshScriptExec オブジェクト、Status, StdOut, StdIn プロパティ
まんま
Dim WshShell, oExec, input Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("2011121700.bat") input = "" Do While True If Not oExec.StdOut.AtEndOfStream Then c = oExec.StdOut.Read(1) input = input & c If InStr(input, "Press any key") <> 0 Then Exit Do End If WScript.Sleep 100 'WScript.Echo c Loop oExec.StdIn.Write VbCrLf 'i = 0 Do While oExec.Status <> 1 WScript.Sleep 100 'WScript.Echo "i: " & i 'i = i + 1 Loop
で、2011121700.bat は、
echo メッセージ ping localhost -n 2 > NUL REM echo Press any key REM echo 何かキー pause
- 完全には理解できていないな…
- oExec.StdOut.Read(1) は、1文字(バイト?)読んでくるようだ
- "Press any key" は pause で表示されるメッセージ「何かキー」の訳し忘れなのかと思ったが、そうではなく REM でコメントアウトしていても標準出力に出ているので Exit Do が実行されるようだ