« WScript.ShellのExec()でコンソールアプリを非表示で実行する。その2 | トップページ | すべてのウィンドウを元のサイズに戻す。その2 »

2007年5月19日 (土)

CScript.exe強制実行

先の応用で、CScript.exeでしか動かないスクリプトが、
もし、WScript.exeで起動されたら、CScript.exeで起動し直します。

既存のVBSファイルの先頭に以下のコードを組み込むだけです。

Option Explicit

Sub RerunCScript 'ここから
Dim Args
Dim Arg
If LCase(Right(WScript.FullName,11))="wscript.exe" Then
  Args=Array("cmd.exe /k CScript.exe",""""&WScript.ScriptFullName&"""")
  For Each Arg In WScript.Arguments
    ReDim Preserve Args(UBound(Args)+1)
    Args(UBound(Args))=""""&Arg&""""
  Next
  WScript.Quit CreateObject("WScript.Shell").Run(Join(Args),1,True)
End If
End Sub
RerunCScript 'ここまで

'以下は既存コードのサンプル
WScript.StdOut.WriteLine WScript.FullName
WScript.StdOut.WriteLine WScript.ScriptFullName
WScript.StdOut.WriteLine WScript.Arguments.Count
Dim k
For k=1 To WScript.Arguments.Count
  WScript.StdOut.WriteLine WScript.Arguments.Item(k-1)
Next