vbs呼叫cmd,並判斷執行結果的方法

2021-04-28 14:29:04 字數 2960 閱讀 5788

最近寫vbs指令碼,指令碼中需要呼叫cmd來執行乙個命令,但是只是執行了,還不行,還需要根據cmd的輸出,判斷執行成功與否。

取到cmd的輸出有兩種方法:

1:本來執行命令的輸出是顯示在螢幕上的,當然我們也可以將輸出儲存到檔案中,然後讀檔案,判斷是否成功了。

功能說明:下面的指令碼是用於判斷作業系統是否是win2k的指令碼,如果是,返回false,不是返回true。

1. 首先是取到放臨時檔案的目錄;

2. 執行cmd命令,並且用》或者》將輸出儲存到檔案中;

3. 讀檔案,檔案內容類似於:microsoft windows [版本 5.2.3790],如果包含5.0,說明系統是2k,我的是2k3;

**如下:

'取得系統型別

function getostype()

'will work with most versions of wsh.

'cmd window will not display.

err.clear

on error resume next

const openasascii      =  0

const failifnotexist   =  0

const forreading       =  1

getostype = true

dim wshshell

set wshshell = createobject("wscript.shell")

dim fso

set fso = createobject("scripting.filesystemobject")

dim stemp, stempfile, ffile, sresults

stemp = wshshell.expandenvironmentstrings("%temp%")

stempfile = stemp & "/runresult.tmp"

wshshell.run "%comspec% /c ver >" & stempfile, 0, true

set ffile = fso.opentextfile(stempfile, forreading, failifnotexist, openasascii)

sresults = ffile.readall

ffile.close

fso.deletefile(stempfile)

set fso = nothing

set ffile = nothing

if err.number <>0 then

getostype = false

returncode = "210:取得作業系統型別失敗"

elseif instr(sresults, "5.0")  then

getostype = false

end if

end function

2:上面的方法當然可以實現,但是其實有更簡潔的方法。就是用exec來執行,上面用的是run。

功能說明:看看是否有某個計畫任務,如果有,就刪除

1.判斷計畫任務是否存在,存在就取到它的名字

2.根據名字,刪除此任務

**如下:

主要**就兩行,就可以實現上面的功能了。

set oexec = createobject("wscript.shell").exec("schtasks /query /fo csv /v /nh")

sresults = oexec.stdout.readall

'刪除原來的計畫任務

function deltask()

err.clear

on error resume next

deltask = true

dim oexec, sresults, temparray, k,taskname,temp, name, ***

*** = false

set oexec = createobject("wscript.shell").exec("schtasks /query /fo csv /v /nh")

sresults = oexec.stdout.readall

temparray = split(sresults,chr(13)&chr(10))

for  k = lbound (temparray,1 ) to ubound(temparray,1)

if  instr( temparray(k), "notepad.exe") > 0  then

temp = split( temparray(k), ",""")

name = temp(1)

taskname =  mid(name,1, len(name)-1)  

*** = true

errinfo = taskname &" :  "& temp(9)

end if

next

set oexec = nothing

set temparray = nothing

set temp = nothing

'如果計畫任務存在,就刪除原有任務

if *** = true then

set oexec = createobject("wscript.shell").exec("schtasks /delete /tn   " & taskname &  "  /f ")

sresults = oexec.stdout.readall

if   instr( sresults, "成功") >0  or instr(sresults, "suc") >0 then

deltask = true

else

deltask = false

errinfo = errinfo & chr(13)&chr(10) &   sresults

end if

end if

end function

C語言執行cmd命令並獲取執行結果

優點 跨平台 缺點 windows下呼叫時會閃出控制台視窗 include include brief 使用popen呼叫終端並獲取執行結果 param in cmd 命令內容 param out result 儲存結果的位址 return 0或1 執行狀態,失敗或成功 int exec cmd c...

如何在應用程式中呼叫CMD並返回執行結果

如何在應用程式中呼叫cmd並返回執行結果 要求做乙個圖形介面的應用程式,輸入命令列的命令,在後台呼叫cmd程式執行該命令但不顯示dos命令列視窗,而且能實時顯示執行的結果。哪位知道怎麼處理?謝啦 void clikecmddlg onbtnexe startupinfo si process inf...

獲取CMD執行結果 匿名管道

管道是一種在程序間共享資料的機制,其實質是一段共享記憶體。windows系統為這段共享的記憶體設計使用資料流i o的方式來訪問。乙個程序讀,另乙個程序寫,這類似於乙個管道的兩端,因此這種程序間的通訊方式稱為 管道 管道分為匿名管道和命名管道。匿名管道只能在父子程序間進行通訊,不能在網路間通訊,而且資...