2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« インターネット一時ファイルを削除する。 | トップページ | コマンドでディレクトリ自身の情報を表示する。 »

2007年12月16日 (日)

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を実行したときと同じように使えます!?

« インターネット一時ファイルを削除する。 | トップページ | コマンドでディレクトリ自身の情報を表示する。 »