web-dev-qa-db-fra.com

Comment appeler un VbScript à partir d'un fichier de commandes sans ouvrir une invite de commande supplémentaire

J'ai un fichier VBScript que j'essaie d'appeler à partir d'un fichier batch. Le code suivant que j'ai copié dans un bloc-notes et enregistré en tant que MyScript.vbs

(http://gallery.technet.Microsoft.com/scriptcenter/8bbed56f-a7aa-491f-a296-687dd96098a3#content)

    Const HIDDEN_WINDOW = 12 

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:" _ 
               & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
    Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

    Set objConfig = objStartup.SpawnInstance_ 
    objConfig.ShowWindow = HIDDEN_WINDOW 
    Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
    errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID) 

Création d'un fichier de commandes nommé Run.bat et ajout du code ci-dessous.

    @echo off

    start "C:\\Users\\guest\\Desktop\\123\\MyScript.vbs"

Lorsque j'essaie d'exécuter le fichier de commandes à l'aide de l'invite de commande, ce qui ouvre une autre invite de commande.

4
JChan
rem This is the command line version
cscript "C:\Users\guest\Desktop\123\MyScript.vbs"

OR

rem This is the windowed version
wscript "C:\Users\guest\Desktop\123\MyScript.vbs"

Vous pouvez également ajouter l'option //e:vbscript pour vous assurer que le moteur de script reconnaîtra votre script en tant que vbscript.

Les fichiers de commandes Windows/DOS ne nécessitent pas l'échappement de \ comme * nix.

Vous pouvez toujours utiliser "C:\Users\guest\Desktop\123\MyScript.vbs", mais cela nécessite que l'utilisateur ait *.vbs associé à wscript.

11
Alvin Wong

Si vous voulez réparer le type d'associations vbs

regsvr32 vbscript.dll
regsvr32 jscript.dll
regsvr32 wshext.dll
regsvr32 wshom.ocx
regsvr32 wshcon.dll
regsvr32 scrrun.dll

De plus, si vous ne pouvez pas utiliser vbs pour des raisons de gestion, convertissez votre script en un programme vb.net conçu pour être simple, facile et prenant 5 minutes. 

La grande différence réside dans les fonctions et les sous-utilisateurs sont appelés à l'aide de crochets plutôt que de fonctions.

Les compilateurs sont donc installés sur tous les ordinateurs sur lesquels .NET est installé.

Voir cet article ici sur la façon de créer un fichier .NET. Notez que l'exemple est destiné à un hôte de script. Vous ne pouvez pas utiliser ceci, vous devez mettre votre code vbs en tant que code .NET.

Comment convertir un VBScript en fichier exécutable (EXE)?

0
David Candy