Scripting 如何区分VBscript是从命令行运行还是通过在窗口中单击来运行?

Scripting 如何区分VBscript是从命令行运行还是通过在窗口中单击来运行?,scripting,command-line,vbscript,Scripting,Command Line,Vbscript,我所要做的就是区分由命令行运行的程序和通过单击窗口中的test.vbs文件运行的程序 如果在命令提示符下键入C:\testFolder\test.vbs来运行脚本,则我希望程序的运行方式与双击testFolder中的test.vbs不同 是否有一些系统变量可用于区分这两种情况?我首先尝试使用WScript.Fullname来确定路径名是以cscript还是WScript结尾。但这并不奏效 非常感谢您的任何想法 您可以尝试以下方法: Set WshShell = CreateObject("WSc

我所要做的就是区分由命令行运行的程序和通过单击窗口中的test.vbs文件运行的程序

如果在命令提示符下键入
C:\testFolder\test.vbs
来运行脚本,则我希望程序的运行方式与双击
testFolder
中的
test.vbs
不同

是否有一些系统变量可用于区分这两种情况?我首先尝试使用
WScript.Fullname
来确定路径名是以cscript还是WScript结尾。但这并不奏效


非常感谢您的任何想法

您可以尝试以下方法:

Set WshShell = CreateObject("WScript.Shell")
Set objEnv = WshShell.Environment("Process")

msgbox objenv("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

为什么效果不太好?这就是确定主机可执行文件的方式。检查
WScript.FullName
的问题在于,如果在命令提示下只需键入脚本名称即可运行脚本,那么它仍将使用WScript.exe运行(假设这是默认的脚本主机)。您必须显式键入
cscript test.vbs
才能使用cscript.exe运行它。您假定a)默认脚本主机是,b)在控制台中,脚本是使用cscript运行的。
i=(instrrev(ucase(WScript.FullName),"CSCRIPT")<>0)