2014-03-06 49 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