web-dev-qa-db-fra.com

J'ai besoin d'exécuter une ligne de commande dans un script Visual Basic

J'ai besoin d'exécuter la commande "ver" dans mes vbs pour voir la version de mon système d'exploitation, et je ne sais pas comment le faire.

J'ai essayé cela, mais ne fonctionne pas:

Function ExecuteWithTerminalOutput(cmd)
Set Shell = WScript.CreateObject("WScript.Shell")
Set Exec =  Shell.Exec("ver")
End Function
9
user1528355

Essayez quelque chose comme ceci:

Dim objShell
Set objShell = WScript.CreateObject ("WScript.Shell")
objShell.run "cmd /c ver"
Set objShell = Nothing

ÉDITER:

Eh bien, vous pouvez rediriger la sortie vers un fichier, puis lire le fichier:

return = WshShell.Run("cmd /c ver > c:\temp\output.txt", 0, true)

Set fso  = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile("c:\temp\output.txt", 1)
text = file.ReadAll
file.Close
13
David Kroukamp

Il existe un moyen de le faire sans avoir à écrire la sortie dans un fichier.

Par exemple, supposons que vous vouliez capturer le texte d'une liste de répertoires. (Il y aurait beaucoup de meilleures façons de l'obtenir que cela, mais j'utilise juste un exemple simple.)

Avec la fonction ci-dessous dans votre VBScript, vous pouvez entrer:

thisDir = getCommandOutput("cmd /c dir c:")

Et lorsque la ligne ci-dessus est exécutée, la variable "thisDir" contiendrait la sortie de la commande DIR.

Notez que certaines commandes dont vous souhaitez obtenir la sortie vous obligeront à les passer par la commande Shell (la partie "cmd/c" de ce qui précède), tandis que d'autres peuvent fonctionner correctement si vous les exécutez directement sans Shell. Essayez-le sans la commande Shell. S'il échoue, essayez-le avec la commande Shell.

'
' Capture the results of a command line execution and
' return them to the caller.
'
Function getCommandOutput(theCommand)

    Dim objShell, objCmdExec
    Set objShell = CreateObject("WScript.Shell")
    Set objCmdExec = objshell.exec(thecommand)
    getCommandOutput = objCmdExec.StdOut.ReadAll

end Function
22
Michael Salsbury
Dim Shell
Set Shell= WScript.CreateObject ("WScript.Shell")
Shell.Exec"cmd /c ver"
Set Shell= Nothing
0
Shaminda