VBSCRIPTを実行BATファイルに含める方法


ファイル数が多いのが嫌だ

  • VBSCRIPTをバッチファイルで実行するとき、CSCRIPTまたはWSCRIPTコマンドの引数として VBSCRIPTが書かれたファイルのパスを指定します
    ちょっとしたスクリプトを実行するのにBATファイルとスクリプト記述ファイルの2つを用意しなければなりません
  • そこで、Windows環境でバッチファイルとVBSCRIPT文を一つのファイルにできないかということ

基本的な構造

  1. ファイル名の拡張子は.batにします 拡張子を.batにすることによってダブルクリックでバッチファイルとして起動します
  2. CSCRIPTのコマンドラインオプションで自分自身を読み込むようにします
    Cscript //NoLogo //E:VBScript "%~f0" と指定すると自分自身をVBSCRIPTファイルとして実行します
    //E:VBscriptと書くことによってファイル拡張子がVBSでなくてもVBSCRIPTとして実行するようになります
  3. バッチファイルとして実行する部分はVBSCRIPTにとって無視できるようコメント行になるようにします
    ' 2> NUL & @CLS
    のように書くと、VBSCRIPTにとっては無害なコメント行で、 バッチファイルとしては、' がエラーになるけれども、エラーメッセージはNULにリダイレクトすることによって メッセージ出力が抑止され & のあとに記述してあるコマンドが実行されます
  4. バッチ部分の最後はEXITを実行するようにすれば以降の行はバッチファイルとしては無視されます
    ' 2> Nul & PAUSE & EXIT /b

実際の例

こんな感じで書けます

VBSCRIPT_SAMPLE.BAT
' 2> Nul & @Cls & @Cscript //NoLogo //E:VBScript "%~f0" %* & @pause & @Exit /b
' ここから下がVBScriptのスクリプト文です
WScript.Echo "これは、VBScriptのEchoです"
WScript.Quit

実行結果