怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

VBScript - WScript と CScript のどちらから起動されたのか判定する

スクリプトの起動元の判定方法を紹介する。

判定方法

WScript.FullName で実行ファイルのパスが取得できる。

WScript.Echo WScript.FullName

▼WScript で実行された場合

▼CScript で実行された場合

C:\WINDOWS\system32\cscript.exe

この結果より WScript.FullName からファイル名を取ることで、wscript or cscript が判定できそうだと分かる。

手っ取り早くやるなら、次のように WScript.FullName の末尾から11文字を取得するだけで事足りる。
(念のため小文字に統一)

WScript.Echo LCase(Right(WScript.FullName, 11))

もうちょい確実にやるなら FileSystemObject の GetFileName メソッドを使って、ファイル名を取得するのもありだろう。
(こちらも念のため小文字に統一)

With CreateObject("Scripting.FileSystemObject")
    WScript.Echo LCase(.GetFileName(WScript.FullName))
End With

ファイル名が取得できたら、あとは条件分岐でそれぞれの処理を書くだけ。

Dim name
name = LCase(Right(WScript.FullName, 11))
If name = "wscript.exe" Then
    'TODO: wscript.exe で実行されたときの処理を書く
ElseIf name = "cscript.exe" Then
    'TODO: cscript.exe で実行されたときの処理を書く
Else
    'TODO: 上記以外の処理を書く(ありえないと思うが)
End If