2014-03-06 48 views
0

请借给我一些帮助,我是一个批处理文件和vbscript的初学者。 如果您能帮我解决我的问题,我将不胜感激。使用vbscript获取批处理文件的退出值

考虑:

一个:

@echo off 
pushd "C:\Program Files\appName" && popd 
IF ERRORLEVEL 1 EXIT 0 
pushd "C:\Program Files\appName" 
IF EXIST application.exe GOTO Installed 
popd 
EXIT 1 
:Installed 
EXIT 2 

B:

Set objFSO = CreateObject("Scripting.FileSystemObject") 
'Set objFile = objFSO.OpenTextFile(listFile, 1) 

dim sh , res 

objName = objFSO.GetTempName 
objTempFile = objName 
'---- Sample Code 0 ----------------------' 
'set sh = WScript.CreateObject("WScript.shell") 
'res = sh.run("fileFullPath",0,true) 
'wScript.echo res 
'----Sample Code 1 ---------------' 
'set sh = WScript.CreateObject("WScript.shell") 
'res = sh.run("fileName",0,true) 
'wScript.echo res 
'---- Sample Code 2 --------------------- 
'set sh = WScript.CreateObject("WScript.shell") 
'res = sh.run("cmd /c fileName",0,true) 
'wScript.echo res 
'---- Sample Code 3 --------------------- 
'set sh = WScript.CreateObject("WScript.shell") 
'res = sh.run("cmd /c fileFullPath",0,true) 
'wScript.echo res 

的B:示例代码1个& 2正常工作与我,但我需要的示例代码0 & 3。带示例代码1的 我总是收到一个错误:系统找不到选中的文件 ,同时带有示例代码3它只会在失败时返回0,如果成功则返回1,而不是批处理文件的返回值。

谢谢,

+0

当我测试它时,示例代码3工作得很好。然而,退出代码0通常意味着“成功”,所以如果出现错误,您不应该退回。我也建议使用'exit/b'而不是'exit'。 –

+0

感谢您的回复@AnsgarWiechers。 我已经尝试过使用'exit/b',但它仍然不起作用。考虑到我要搜索的文件确实存在。使用示例代码1和2时,它的值为2.使用示例代码3时,指定了批处理文件的完整路径,我继续将1作为输出。是否有另一种方法可以让我获得与示例代码1和2相同的输出,因为我必须通过完整路径访问批处理文件。谢谢。 – JSun

+0

只有批处理脚本位于当前工作目录中时,代码1和2才能工作。除此之外,所有4个样品都应该产生相同的结果。请提供证据。 –

回答

1

刚才我已经解决了我的问题。我发现,即使我已经有"cmd /c fileFullPath"双引号。 当一个文件夹名称包含一些空格时,会导致问题 - >找不到文件。现在我正在使用"cmd /c ""fileFullPath"""

对不起,我的第一篇文章缺乏信息。我会尽我所能在下次更清楚。非常感谢。 :D