OVH Cloud OVH Cloud

Affichage de l'interpréteur de script

2 réponses
Avatar
mike4409
Bonjour,

J'aimerai savoir si dans un VBS on peut connaître l'interpréteur lancé ?

Du style

si "interpreteur = cscript.exe" alors
afficher " Ce script a été lancé avec cscript.exe"
sinon
afficher " Ce script a été lancé avec wscript.exe"
fin si

Le but serait en mode automatique via cscript.exe d'afficher des echo en
mode console alors qu'avec wscript.exe, l'affichage se fasse avec Internet
Explorer.

Merci de votre aide

2 réponses

Avatar
Jean-Claude BELLAMY
Dans le message news: ,
mike4409 s'est ainsi exprimé:

Bonjour,

J'aimerai savoir si dans un VBS on peut connaître l'interpréteur
lancé ?
Oui :

WScript.FullName
http://www.bellamyjc.org/fr/vbsobj/wsprofullname.html

Du style

si "interpreteur = cscript.exe" alors
afficher " Ce script a été lancé avec cscript.exe"
sinon
afficher " Ce script a été lancé avec wscript.exe"
fin si

Le but serait en mode automatique via cscript.exe d'afficher des echo
en mode console alors qu'avec wscript.exe, l'affichage se fasse avec
Internet Explorer.



Je teste cela quasi systématiquement dans mes scripts, qui sont pour la
plupart à être lancés en mode console. Et de façon automatique je modifie le
moteur par défaut.
Pour info, voici le sous-programme que j'ai créé et incorpore dans la
plupart de mes scripts :


------------- couper ici -------------
Const SW_HIDE=0
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set args = Wscript.Arguments
nbargs=args.count
'..... insérer votre code ici
' Si le script DOIT être exécuté sous CSCRIPT :
' Call TestHost(true)
' Si le script PEUT être exécuté sous CSCRIPT :
' Call TestHost(true)
' ....

'Sous-programme de test du moteur
'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT)
'qui doit être utilisé de préférence ou obligatoirement
Sub TestHost(force)
dim rep
strappli=lcase(Wscript.ScriptFullName)
strFullName =lcase(WScript.FullName)
i=InStr(1,strFullName,".exe",1)
j=InStrRev(strFullName,"",i,1)
strCommand=Mid(strFullName,j+1,i-j-1)
if strCommand<>"cscript" then
If force then
Init="Ce script doit être lancé avec CSCRIPT"
Else
Init="Il est préférable de lancer ce script avec CSCRIPT"
End If
rep=MsgBox(Init & VBCRLF & _
"Cela peut être rendu permanent avec la commande" & VBCRLF & _
"cscript //H:CScript //S /Nologo" & VBCRLF & _
"Voulez-vous que ce soit fait automatiquement?", _
vbYesNo + vbQuestion,strappli)
if rep=vbYes then
' On crée un batch qui va successivement
' 1- changer le moteur de script par défaut
' 2- relancer le script, avec tous ses paramètres éventuels
nomcmd="setscript.bat"
Set ficcmd = fso.CreateTextFile(nomcmd)
ficcmd.writeline "@echo off"
' Changement de moteur
ficcmd.writeline "cscript //H:CScript //S /Nologo"
ficcmd.writeline "pause"
params=""
For i = 0 To nbargs-1
params=params & " " & args(i)
next
' Relance du script
ficcmd.writeline chr(34) & strappli & chr(34) & params
ficcmd.writeline "pause"
ficcmd.close
' Exécution du batch
shell.Run nomcmd, SW_SHOWNORMAL,true
force=true
end if
If force then WScript.Quit
end if
end sub
------------- couper ici -------------


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
Alain CROS
Bonjour.

WScript.Echo (WScript.FullName)

Alain CROS

"mike4409" a écrit dans le message de news:

Bonjour,

J'aimerai savoir si dans un VBS on peut connaître l'interpréteur lancé ?

Du style

si "interpreteur = cscript.exe" alors
afficher " Ce script a été lancé avec cscript.exe"
sinon
afficher " Ce script a été lancé avec wscript.exe"
fin si

Le but serait en mode automatique via cscript.exe d'afficher des echo en
mode console alors qu'avec wscript.exe, l'affichage se fasse avec Internet
Explorer.

Merci de votre aide