2012-12-17 67 views
5

在我的批處理文件中,我想問用戶一個問題。yes/no批處理文件

我寫了下面:

SET /P ANSWER=Click Y to continue or N to stop (Y/N) 

,但我得到的消息沒有最後)

有人知道爲什麼嗎?

謝謝!

+2

它工作正常的我。它會給你一個錯誤?或者它只是不顯示最後一個支架? –

+0

它也適用於我。 –

+0

不顯示最後一個支架 – zipi

回答

12

因爲您在括號內的區塊內使用該提示,例如

if ... (
    ... 
    set /P ANSWER=Blah (Y/N) 
) 

for %%x in (...) do (
    ... 
    set /P ANSWER=Blah (Y/N) 
) 

你要逃避這種情況下,右括號:

SET /P ANSWER=Click Y to continue or N to stop (Y/N^) 

或引用整個論點:

SET /P "ANSWER=Click Y to continue or N to stop (Y/N)" 

否則關閉塊。如果你在右括號之後有任何東西,你會得到一個語法錯誤。

你做什麼更簡單的方法將有可能成爲choice命令:

choice /M "Press Y to continue or N to stop" /c YN 

然後,您可以檢查ERRORLEVEL事後找出用戶的選擇:

if errorlevel 255 (
    echo Error 
) else if errorlevel 2 (
    echo No. 
) else if errorlevel 1 (
    echo Yes. 
) else if errorlevel 0 (
    echo Ctrl+C pressed. 
) 
+0

(是/否^) - 不幫助的問題和選擇命令導致我的批處理失敗 – zipi

+3

+1 - 更容易我認爲是使用引號:'set/p「answer =點擊Y繼續(是/否)「。我很確定CHOICE在某些Windows版本上不是標準的。 – dbenham