2015-10-16 96 views
0

我正在編寫一個必須在Windows服務器或工作站上運行的安裝vbscript。某些服務器無法運行此內部命令(Windows Server 2003)。在我的腳本中,我想知道系統是否能夠運行「mklink」(或創建符號鏈接)。 我試圖讓「運行命令」的返回代碼,但它並不能幫助:如何知道我是否可以使用Windows命令「mklink」?

Set oShell = CreateObject ("WSCript.shell") 
rc = oShell.Run("cmd /C mklink", 0, True) 
rc = oShell.Run("cmd /C mklinks", 0, True) 

1)「mklink」的存在,這顯示其幫助消息:RC = 1
2)「mklinks 「不存在:RC = 1

如果我嘗試在控制檯和顯示屏%ERRORLEVEL%手動將這些命令,
1)我得到 」1「
2)我得到 」9009「! Yesss,但是我得到「1」作爲Run方法的返回碼。

我也試過shell對象的「Exec」方法,但在兩種情況下我得到「0」。

一個想法?

回答

2

您正在檢索cmd實例的退出代碼,而不是執行的命令的退出代碼。要獲得命令的退出代碼,您可以嘗試使用

rc = oShell.Run("cmd /v /c mklink & exit !errorlevel!", 0, True) 
+0

感謝您的幫助。很棒!之前,我嘗試過......&退出%ERRORLEVEL%但沒有成功。 –

+0

@ P.Debrabant,正常變量擴展('%var%')在命令執行之前的解析時完成。在這種情況下,您需要啓用延遲擴展('/ v')並將語法更改爲'!var!',以向解析器指示變量擴展必須延遲,直到命令將要執行。 –

相關問題