2012-07-16 43 views

Respuesta

12

intentar algo como esto:

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

EDIT:

Bueno, entonces usted puede redirigir la salida a un archivo y después lee el archivo:

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 
+0

bien, funciona, pero necesito el resultado en una var, para usar en un Si, ¿puedo hacer esto? ¡Gracias por la ayuda! – user1528355

+0

@ user1528355 ver la publicación editada –

+1

Gracias, hermano! ¡Funciona! Una cosa, el ";" no lo necesito ¡Ayuda agradable y muy rápido! – user1528355

17

Hay una forma de hacerlo sin tener que escribir salida en un archivo.

Por ejemplo, supongamos que desea capturar el texto de una lista de directorios. (. Habría un montón de mejores maneras de conseguir lo que esto, pero yo estoy usando un ejemplo sencillo)

Con la función de abajo en su VBScript, puede escribir:

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

Y cuando la línea de arriba se ejecuta, la variable "thisDir" contendría el resultado del comando DIR.

Tenga en cuenta que algunos comandos que desea obtener de salida requerirán pasarlos a través del shell de comandos (la parte "cmd/c" de arriba), mientras que otros pueden funcionar bien si los ejecuta directamente sin el shell. Pruébalo sin el shell de comandos. Si falla, pruébelo con el shell de comandos.

' 
' 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 
Cuestiones relacionadas