Мне нужно выполнить командную строку в сценарии Visual Basic

Мне нужно выполнить команду «ver» в моем VBS, чтобы увидеть версию моей операционной системы, и я не знаю, как это сделать.

Я пробовал это, но не работает:

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

person user1528355    schedule 16.07.2012    source источник


Ответы (2)


Попробуйте что-то вроде этого:

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

РЕДАКТИРОВАТЬ:

Ну, тогда вы можете перенаправить вывод в файл, а затем прочитать файл:

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
person David Kroukamp    schedule 16.07.2012
comment
хорошо, это работает, но мне нужен результат в var, чтобы использовать его в If, могу ли я это сделать? Спасибо за помощь! - person user1528355; 16.07.2012
comment
Спасибо, бро! Это работает! Одна вещь, ; не нужно это. Хорошая помощь и слишком быстро! - person user1528355; 16.07.2012

Есть способ сделать это без записи вывода в файл.

Например, предположим, что вы хотите захватить текст списка каталогов. (Было бы много лучших способов получить это, но я просто использую простой пример.)

С помощью приведенной ниже функции в вашем VBScript вы можете ввести:

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

И когда приведенная выше строка будет выполнена, переменная thisDir будет содержать выходные данные команды DIR.

Обратите внимание, что некоторые команды, из которых вы хотите получить вывод, потребуют, чтобы вы передали их через командную оболочку (часть «cmd /c» выше), в то время как другие могут работать нормально, если вы запускаете их напрямую без оболочки. Попробуйте без командной оболочки. Если не получится, попробуйте через командную оболочку.

'
' 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
person Michael Salsbury    schedule 09.08.2012