CScript.exeからコンソールアプリを同じコンソールウィンドウで実行する。
CScript.exeからWScript.ShellのRun()でコンソールアプリを起こすと、別のコンソールウィンドウが開いて実行されます。
しかも、コンソールアプリが終了すると、別のコンソールウィンドウも閉じてしまうではありませんか!
なんで、わざわざ、別のコンソールウィンドウを開くんでしょうね。全く。。。
一方、Exec()は別のコンソールウィンドウを開きません。:-)
ところが、標準入出力がリダイレクトされていて、コンソールアプリからコンソールウィンドウに入出力できないやおまへんか。わちゃーでんな。何とかならんの?
そこで、コンソールアプリを同じコンソールウィンドウで実行します。
しかも、コンソールアプリからコンソールウィンドウに入出力します。
以下のサンプルは、代表的なコンソールアプリであるcmd.exeをCScript.exeから同じコンソールウィンドウで実行します。
CScript.exe ExecRun.VBS
Sub ExecRun(Command)
Dim wShell
Dim oExec
Set wShell=CreateObject("WScript.Shell")
WScript.Echo wShell.CurrentDirectory & ">" & Command
Set oExec=wShell.exec("cmd.exe /c <con 2>&1 " & Command)
Do While Not oExec.StdOut.AtEndOfStream
WScript.StdOut.Write oExec.StdOut.Read(1)
Loop
Do While oExec.Status=0
WScript.Sleep 100
Loop
WScript.Echo "リターンコード (ERRORLEVEL) :",oExec.ExitCode
End Sub
ExecRun "cmd.exe"
これでコマンドプロンプトからcmd.exeを実行したときと同じように使えます!?