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

问题描述 投票:0回答:4

我想做的就是区分通过命令行运行的程序还是通过单击窗口中的 test.vbs 文件运行的程序。

如果您通过在命令提示符中键入

C:\testFolder\test.vbs
来运行脚本,那么我希望程序的运行方式与双击
test.vbs
中的
testFolder
不同。

是否有一些系统变量可以用来区分这两种情况?我首先尝试使用

WScript.Fullname
来确定路径名是否以 cscript 或 wscript 结尾。但效果并不那么好。

任何想法都将不胜感激。

scripting command-line vbscript
4个回答
5
投票

你可以尝试这样的事情:

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

msgbox objenv("PROMPT")

一般来说,从命令提示符运行时,PROMPT 将设置为类似 $P$G 的值,但当直接运行 .VBS 文件时,将保留空白。


3
投票

如果您想针对

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

0
投票
i=(instrrev(ucase(WScript.FullName),"CSCRIPT")<>0)

如果运行 cscript,则返回 -1;如果运行 wscript,则返回 0


0
投票
If InStr(LCase(WScript.FullName), "cscript") = 0 Then
    WScript.Echo "WScript"
Else ' cscript environment
    WScript.StdOut.Write("CScript" & vbCrLf)
End if
© www.soinside.com 2019 - 2024. All rights reserved.