5 votes

Comment faire la différence entre un VBscript exécuté depuis la ligne de commande ou en cliquant dans une fenêtre ?

Tout ce que je veux, c'est faire la différence entre le programme exécuté par la ligne de commande ou en cliquant sur le fichier test.vbs dans une fenêtre.

Si vous exécutez le script en tapant C:\testFolder\test.vbs dans une invite de commande, alors je veux que le programme s'exécute différemment que si vous double-cliquez sur test.vbs dans le testFolder .

Existe-t-il une variable système que je peux utiliser pour différencier les deux scénarios ? J'ai d'abord essayé d'utiliser WScript.Fullname pour déterminer si le chemin d'accès se termine par cscript ou wscript. Mais ça ne marchait pas très bien.

Toute idée est la bienvenue.

5voto

Joel Spolsky Points 22686

Vous pourriez essayer quelque chose comme ça :

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

msgbox objenv("PROMPT")

En général, PROMPT sera défini sur quelque chose comme $P$G lorsqu'il est exécuté à partir d'une invite de commande, mais laissé vide lorsque vous exécutez directement le fichier .VBS.

3voto

Tmdean Points 4594

Si vous voulez tester contre WScript.FullName vous pouvez utiliser InStr con vbTextCompare afin que la correspondance soit insensible à la casse.

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

0voto

Antoni Gual Via Points 63
i=(instrrev(ucase(WScript.FullName),"CSCRIPT")<>0)

renvoie -1 si l'on exécute cscript, 0 si l'on exécute wscript

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X