2015-10-16 97 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!',以向解析器指示变量扩展必须延迟,直到命令将要执行。 –

相关问题