我想做的就是区分通过命令行运行的程序还是通过单击窗口中的 test.vbs 文件运行的程序。
如果您通过在命令提示符中键入
C:\testFolder\test.vbs
来运行脚本,那么我希望程序的运行方式与双击 test.vbs
中的 testFolder
不同。
是否有一些系统变量可以用来区分这两种情况?我首先尝试使用
WScript.Fullname
来确定路径名是否以 cscript 或 wscript 结尾。但效果并不那么好。
任何想法都将不胜感激。
你可以尝试这样的事情:
Set WshShell = CreateObject("WScript.Shell")
Set objEnv = WshShell.Environment("Process")
msgbox objenv("PROMPT")
一般来说,从命令提示符运行时,PROMPT 将设置为类似 $P$G 的值,但当直接运行 .VBS 文件时,将保留空白。
如果您想针对
WScript.FullName
进行测试,可以将 InStr
与 vbTextCompare
一起使用,以便匹配不区分大小写。
If InStr(1, WScript.FullName, "cscript", vbTextCompare) Then
WScript.Echo "Console"
ElseIf InStr(1, WScript.FullName, "wscript", vbTextCompare) Then
WScript.Echo "Windows"
Else
WScript.Echo "???"
End If
i=(instrrev(ucase(WScript.FullName),"CSCRIPT")<>0)
如果运行 cscript,则返回 -1;如果运行 wscript,则返回 0
If InStr(LCase(WScript.FullName), "cscript") = 0 Then
WScript.Echo "WScript"
Else ' cscript environment
WScript.StdOut.Write("CScript" & vbCrLf)
End if