2012-07-16 7 views

risposta

12

provare qualcosa di simile:

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

EDIT:

Bene, allora è possibile reindirizzare l'output in un file e poi leggere il file:

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

ok bello, funziona, ma ho bisogno del risultato in una var, da utilizzare in un If, posso fare questo? Grazie per l'aiuto! – user1528355

+0

@ user1528355 vedi post modificato –

+1

Grazie fratello! Funziona! Una cosa, il ";" non ne ho bisogno. Bel aiuto e troppo veloce! – user1528355

17

Esiste un modo per farlo senza dover scrivere l'output su un file.

Ad esempio, si supponga di voler acquisire il testo di un elenco di directory. (. Ci sarebbero un sacco di modi migliori per farlo di questo, ma io sono solo utilizzando un semplice esempio)

Con la funzione qui sotto nella tua VBScript, è possibile immettere:

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

E quando la riga sopra è eseguita, la variabile "thisDir" conterrà l'output dal comando DIR.

Si noti che alcuni comandi da cui si desidera eseguire l'output richiedono il passaggio attraverso la shell dei comandi (la parte "cmd/c" di sopra), mentre altri potrebbero funzionare correttamente se vengono eseguiti direttamente senza la shell. Provalo senza la shell di comando. Se fallisce, provalo con la shell dei comandi.

' 
' 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 
Problemi correlati