2012-07-16 12 views
7

Tôi cần thực hiện lệnh "ver" trong vbs của tôi để xem phiên bản Hệ điều hành của tôi và tôi không biết cách thực hiện.Tôi cần thực hiện dòng lệnh trong Visual Basic Script

tôi đã cố gắng này, nhưng không làm việc:

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

Trả lời

12

Hãy thử một cái gì đó như thế này:

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

EDIT:

Vậy thì bạn có thể chuyển hướng đầu ra vào một tập tin và sau đó đọc 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 tốt, nó hoạt động, nhưng tôi cần kết quả trong var, để sử dụng trong If, tôi có thể làm điều này không? Cảm ơn bạn đã trợ giúp! – user1528355

+0

@ user1528355 xem bài chỉnh sửa –

+1

Cảm ơn bro! Nó hoạt động! Một điều, ";" không cần nó. Trợ giúp tốt và quá nhanh! – user1528355

17

Có một cách để làm điều này mà không cần phải ghi đầu ra vào một tập tin.

Ví dụ: giả sử bạn muốn chụp lại văn bản của danh sách thư mục. (. Sẽ có rất nhiều cách tốt hơn để có được nó hơn thế này, nhưng tôi chỉ cần sử dụng một ví dụ đơn giản)

Với chức năng dưới đây trong VBScript của bạn, bạn có thể nhập:

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

Và khi dòng trên được thực hiện, biến "thisDir" sẽ chứa đầu ra từ lệnh DIR. Lưu ý rằng một số lệnh bạn muốn xuất ra sẽ yêu cầu bạn truyền chúng thông qua lệnh shell (phần "cmd/c" ở trên), trong khi các lệnh khác có thể hoạt động tốt nếu bạn chạy chúng trực tiếp mà không có trình bao. Hãy thử nó mà không có lệnh shell. Nếu nó không thành công, hãy thử nó bằng lệnh 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