技術情報
WshScriptExecオブジェクト
別のプログラムを実行した際の情報を扱うためのオブジェクトです。
WshShellオブジェクトのExecメソッドが返すオブジェクトです。

[オブジェクトの生成]
Set オブジェクト変数 = WshShell.Exec(...)

プロパティ
  • AtEndOfLineプロパティ
  • 実行中の別のプログラムの標準出力の行末状態を取得します。

    書式 "WshScriptExecオブジェクト".StdOut.AtEndOfLine
    実行中の別のプログラムの標準出力が行末に達したかどうかを返します。
    行末に達している場合は True、そうでない場合は False を返します。

    (例)
    'バッチファイルの標準出力を受け取ります
    Dim oShell, StrInput
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    StrInput = ""
    Do While oExec.StdOut.AtEndOfLine = False
      StrInput = StrInput & oExec.StdOut.Read(1)
    Loop
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop

  • AtEndOfStreamプロパティ
  • 実行中の別のプログラムの標準出力の最後に達したかどうかを取得します。

    書式 "WshScriptExecオブジェクト".StdOut.AtEndOfStream
    実行中の別のプログラムの標準出力が最後に達したかどうかを返します。
    最後に達している場合は True、そうでない場合は False を返します。

    (例)
    'バッチファイルの標準出力を受け取ります
    Dim oShell, StrInput
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    StrInput = ""
    Do While oExec.StdOut.AtEndOfStream = False
      StrInput = StrInput & oExec.StdOut.Read(1)
    Loop
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop

  • Columnプロパティ
  • 実行中の別のプログラムの標準出力の現在の文字位置を取得します。

    書式 "WshScriptExecオブジェクト".StdOut.Column

    (例)
    'バッチファイルの標準出力を受け取ります
    Dim oShell, StrInput
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    StrInput = ""
    Do While oExec.StdOut.AtEndOfStream = False
    StrInput = StrInput & oExec.StdOut.Read(1)
    WScript.Echo oExec.StdOut.Column
    Loop
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop

  • ExitCodeプロパティ
  • 実行中の別のプログラムにより設定された終了コードを返します。

    書式 "WshScriptExecオブジェクト".ExitCode

    (例)
    'DIRコマンドを実行して結果を受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("cmd /K Dir/W")
    Do Until oExec.StdOut.AtEndOfStream
      WScript.Echo oExec.StdOut.ReadLine
    Loop
    '終了コードを表示します
    WScript.Echo oExec.ExitCode

  • ProcessIDプロパティ
  • 実行中の別のプログラムにより起動されたプロセスID(PID)を返します。

    書式 "WshScriptExecオブジェクト".ProcessID

    (例)
    'DIRコマンドを実行して結果を受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("cmd /K Dir/W")
    Do Until oExec.StdOut.AtEndOfStream
      WScript.Echo oExec.StdOut.ReadLine
    Loop
    'PDIを表示します
    WScript.Echo oExec.ProcessID

  • Statusプロパティ
  • 実行中の別のプログラムのステータス情報を取得します。

    書式 "WshScriptExecオブジェクト".Status
    ステータス情報は状態を表す以下のいずれかの値を返します。
    0:プログラムは実行中です
    1:プログラムの実行は完了しました

    (例)
    'nodepadを起動して、閉じるまで待ちます。
    Dim oShell, oExec
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("notepad.exe")
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop

    WScript.Echo "メモ帳は終了しました"

  • StdOutプロパティ
  • 実行中の別のプログラムが標準出力に出力した情報を取得します。

    書式 "WshScriptExecオブジェクト".StdOut

    (例)
    'DIRコマンドを実行して結果を受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("cmd /K Dir/W")
    Do Until oExec.StdOut.AtEndOfStream
      WScript.Echo oExec.StdOut.ReadLine
    Loop

  • StdInプロパティ
  • 実行中の別のプログラムの標準入力への情報を渡します。

    書式 "WshScriptExecオブジェクト".StdIn

    (例)
    'バッチファイルの標準入力を使用します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    oExec.StdIn.Write "1234" & vbCrLf
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop

  • StdErrプロパティ
  • 実行中の別のプログラムの標準エラー出力への情報を渡します。

    書式 "WshScriptExecオブジェクト".StdErr

    (例)
    'バッチファイルの標準エラー出力を使用します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    oExec.StErr.Write "Error" & vbCrLf
    Do While oExec.Status = 0
      WScript.Sleep 100
    Loop


メソッド
  • Closeメソッド
  • 実行中の別のプログラムのStdIn、StdOut、StdErrを閉じます。

    書式 "WshScriptExecオブジェクト".StdIn.Close()
    "WshScriptExecオブジェクト".StdOut.Close()
    "WshScriptExecオブジェクト".StdErr.Close()

    (例)
    'バッチファイルの実行エラーを受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    Do Until oExec.StdErr.AtEndOfStream
      WScript.Echo oExec.StdErr.ReadLine
    Loop oExec.StdErr.Close()

  • Readメソッド
  • 実行中の別のプログラムの標準出力、標準エラー出力から文字を読み取ります。

    書式 "WshScriptExecオブジェクト".StdOut.Read(引数1)
    "WshScriptExecオブジェクト".StdErr.Read(引数1)
    ■ 引数1(必須)
    読み取る文字数を指定します。

    (例)
    'バッチファイルの実行エラーを受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    Do Until oExec.StdErr.AtEndOfStream
      WScript.Echo oExec.StdErr.Read(1)
    Loop

  • ReadAllメソッド
  • 実行中の別のプログラムの標準出力、標準エラー出力から文字すべて読み取ります。

    書式 "WshScriptExecオブジェクト".StdOut.ReadAll
    "WshScriptExecオブジェクト".StdErr.ReadAll

    (例)
    'バッチファイルの実行エラーを受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    WScript.Echo oExec.StdErr.ReadAll

  • ReadLineメソッド
  • 実行中の別のプログラムの標準出力、標準エラー出力から行単位で読み取ります。

    書式 "WshScriptExecオブジェクト".StdOut.ReadLine
    "WshScriptExecオブジェクト".StdErr.ReadLine

    (例)
    'バッチファイルの実行エラーを受け取ります
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    Do Until oExec.StdErr.AtEndOfStream
      WScript.Echo oExec.StdErr.ReadLine
    Loop

  • Terminateメソッド
  • 実行中の別のプログラムを終了します。

    書式 "WshScriptExecオブジェクト".Terminate

    (例)
    'DIRコマンドを実行を終了します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("cmd /K Dir/W")
    oExec.Terminate()

  • Writeメソッド
  • 実行中の別のプログラムの標準入力へ文字を入力します。

    書式 "WshScriptExecオブジェクト".StdIn.Write(引数1)
    ■ 引数1(必須)
    書き込む文字列を指定します。

    (例)
    'バッチファイルの標準入力へ出力します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    oExec.StdIn.Write vbCrLf

  • WriteBlankLinesメソッド
  • 実行中の別のプログラムの標準入力へ改行文字を出力します。
    空行が出力されることになります。

    書式 "WshScriptExecオブジェクト".StdIn.WriteBlankLines(引数1)
    ■ 引数1(必須)
    出力する改行文字数を指定します。

    (例)
    'バッチファイルの標準入力へ出力します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    oExec.StdIn.WriteBlankLines(5)

  • WriteLineメソッド
  • 実行中の別のプログラムの標準入力へ行単位で文字列を出力します。

    書式 "WshScriptExecオブジェクト".StdIn.WriteLine(引数1)
    ■ 引数1
    出力する文字列を指定します。
    文字列が出力されると、最後に常に改行文字を1つ自動的に出力します。
    未指定の場合は、WriteBlankLines(1)と等価になります。

    (例)
    'バッチファイルの標準入力へ出力します
    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    Set oExec = oShell.Exec("C:\Temp\Test.bat")
    oExec.StdIn.WriteLines("1234")