2009-10-25 24 views
0

我寫了下面的代碼選擇命令沒有不同

choice /m "Do you want to add another profile" 
if errorlevel 1 set /p profile_name1=Enter one of the above profile names: 

然而,它始終運行「中輸入上述配置文件名稱之一:」即使我沒有按下。我做錯了什麼?

謝謝!

+0

您的意思是:%errorlevel%?,也請編輯您的文章,包括代碼格式,以便我們可以更好地閱讀它 – 2009-10-25 01:56:29

+0

喬諾,我試過第一次它只是做了以上的事情!這看起來更好,我很抱歉: 選擇/ m「是否要添加其他配置文件」 如果errorlevel 1 set/p profile_name1 =輸入上述配置文件名稱之一: 和NO我不是指%errorlevel% – thegreyspot 2009-10-25 03:28:44

回答

2

您需要爲每個結果提供說明。 例如: -

choice /m "Do you want to add another profile" 
if errorlevel 2 goto :doOtherStuff 
if errorlevel 1 set /p profile_name1=Enter one of the above profile names: 
:doOtherStuff 

另外請注意,順序很重要,你必須列出按降序排列(2然後1)errorlevels。

+1

謝謝先生,你救了我:) – thegreyspot 2009-10-25 03:44:28

0

首先,/ m不是您可以傳遞給選擇的有效參數。嘗試刪除它,這可能是令人困惑的選擇。

另外: IF ERRORLEVEL返回TRUE如果返回代碼是等於或更高比指定的錯誤級別。請檢查每一個可能的返回值(在你的情況,既肯定又否定)

IF ERRORLEVEL 2 SET ANS="No" 
IF ERRORLEVEL 1 SET ANS="Yes" 

,並使用回答的值在批處理文件的其餘部分。

+0

錯誤,根據選擇的結果/?: /M文本指定要在 之前顯示的消息提示。如果未指定,則實用程序 僅顯示提示。 – 2009-10-25 02:08:38

+0

我認爲你錯了。我能找到的唯一記錄的開關是/ C,/ N/S /&/ T - 您有參考嗎?我想知道。 – 2009-10-25 02:38:30

+0

我有一個基本的Windows XP安裝 - 我甚至沒有在我的機器上選擇,所以我只有在線文檔去,儘管如此,但真正的問題是無論如何錯誤級別的線。 – 2009-10-25 02:53:23