こんにちは。新人プログラマのカワトです。
先日、VBScriptからbatファイルを実行するプログラムを作成する課題があり、初めてVBScriptに触ることになりました。
VBScriptからbatファイルを実行するには、WshShellクラスのRunメソッド または Execメソッドを使用するそうです。
今回、私は Runメソッド を使用してbatファイルを実行するプログラムを作成したので、Runメソッド でbatファイルを実行する例を紹介したいと思います!
RunメソッドとExecメソッドの違い
参考: http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_02.html
VBScriptからbatファイルを実行しよう。
サンプル1
sample.vbs
・C:\test\sample.bat を実行する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
' 変数の宣言を強制する Option Explicit ' WshShellオブジェクトを作成する Dim WshShell Set WshShell = WScript.CreateObject("WScript.Shell") ' batファイルを実行する WshShell.Run "C:\test\sample.bat",0,True ' オブジェクトを開放する Set WshShell = Nothing |
sample.bat
・C:\test\test.bat を呼び出す
1 2 3 4 5 6 7 8 9 10 11 12 13 |
rem echoをオフにする @echo off rem バッチ・ファイルでの環境変数のローカル化を開始する setlocal rem C:\test\test.batを呼び出す call C:\test\test.bat rem バッチ・スクリプトを終了する exit /b 0 |
サンプル1では、単純にsample.batを実行するだけのプログラムとなっていて、エラーハンドリングが全くできていないため、サンプル2では、エラーハンドリングを考慮するようにしてみました。
サンプル2
sample.vbs
・C:\test\sample.batの存在を確認する
存在する場合 :batファイルを実行する
存在しない場合:”batファイルが存在しません”のメッセージを表示する
・batファイルを実行した場合、batファイルから取得した戻り値によって表示するメッセージを変える
戻り値が「0」の場合 :”正常終了”のメッセージを表示する
戻り値が「100」の場合:”異常終了”のメッセージを表示する
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 31 32 33 34 35 36 37 38 39 40 41 |
' 変数の宣言を強制する Option Explicit ' FileSystemObject オブジェクトを作成する Dim objFso Set objFso = CreateObject("Scripting.FileSystemObject") ' C:\test\sample2.batが存在する場合 If objFso.FileExists("C:\test\sample.bat") Then ' WshShellオブジェクトを作成する Dim WshShell, RtnCode Set WshShell = WScript.CreateObject("WScript.Shell") ' batファイルを実行し、batファイルからの戻り値をRtnCodeに設定される RtnCode = WshShell.Run("C:\test\sample.bat",0,1) ' 戻り値が 0 の場合 If RtnCode = 0 Then ' 正常終了 のメッセージを表示する WScript.Echo "正常終了" ' 戻り値が 0 以外の場合 Else ' 異常終了 のメッセージを表示する WScript.Echo "異常終了" End If ' オブジェクトを開放する Set WshShell = Nothing ' C:\test\sample.batが存在しない場合 Else ' batファイルが存在しません のメッセージを表示する WScript.Echo "batファイルが存在しません" End If ' オブジェクトを開放する Set objFso = Nothing |
sample.bat
・C:\test\test.bat を呼び出す
※C:\test\test.bat が存在する場合は戻り値「0」、存在しない場合は戻り値「100」を返す
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
rem echoをオフにする @echo off rem バッチ・ファイルでの環境変数のローカル化を開始する setlocal rem C:\test\test.batを呼び出す call C:\test\test.bat rem エラーが発生した場合、:ERRORの行に処理を移す if errorlevel 1 goto ERROR rem 戻り値 0 でバッチ・スクリプトを終了する exit /b 0 :ERROR rem 戻り値 100 でバッチ・スクリプトを終了する exit /b 100 |
VBScriptからbatファイルを実行するプログラムを作成する機会がある方は、是非試してみてください(^^)