Как узнать разницу между VBscript запускается из командной строки или нажав его в окне? - PullRequest
4 голосов
/ 31 декабря 2010

Все, что я хочу сделать, - это различить программу, запускаемую из командной строки, или щелкнув файл test.vbs в окне.

Если вы запустите сценарий, набрав C:\testFolder\test.vbs в командной строке, тогда я хочу, чтобы программа работала иначе, чем если бы вы дважды щелкнули test.vbs в testFolder.

Есть ли какая-нибудь системная переменная, которую я могу использовать, чтобы различать два сценария? Сначала я попытался использовать WScript.Fullname, чтобы определить, заканчивается ли путь в cscript или wscript. Но это не сработало так хорошо.

Любые идеи очень ценятся.

Ответы [ 3 ]

4 голосов
/ 01 января 2011

Вы можете попробовать что-то вроде этого:

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

msgbox objenv("PROMPT")

В общем случае PROMPT будет установлен на что-то вроде $ P $ G при запуске из командной строки, но оставлено пустым при запуске файла .VBS напрямую..

3 голосов
/ 01 января 2011

Если вы хотите проверить по 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 голосов
/ 27 июня 2019
i=(instrrev(ucase(WScript.FullName),"CSCRIPT")<>0)

возвращает -1 при запуске cscript, 0 при запуске wscript

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...