我有兩個關於正在處理的批處理腳本的問題。我意識到批處理腳本的問題很常見,但還沒有找到答案我的確切問題,所以我想我會試着問。有問題的區域是菜單上的用戶輸入部分。批處理腳本輸入問題
有兩個問題:1)輸入的輸入不是指定的選項之一會導致腳本跳轉到隨機區域。並且2)使用外部程序的某些部分即使在我知道語法和標誌使用通常是正確的時候也不會使用%input%(因爲我可以手動運行它們......所以出於某種原因,輸入不是'捕捉他們)。
第一個問題例如:
:MenuOne
echo Select one of the following options:
echo 1) x
echo 2) y
echo Q) Quit
set INPUT=
set /P INPUT=[1,2,Q]: %=%
If "%INPUT%"=="1" goto xoption
If "%INPUT%"=="2" goto yoption
If /I "%INPUT%"=="Q" goto Quit
:xoption
@REM Here goes a lot more submenus and/or options that actually run tools via cmd.
:yoption
@REM Again, menus and/or tools being invoked, in a listed menu, designed like above.
:Quit
echo Quitting...
exit
如果用戶鍵入「B」的選擇提示,我很樂意爲腳本的時候給出錯誤和重複菜單。相反,它會混在其他菜單中。我猜我需要一些ELSE語句?有沒有人有我可以用來實現這個目標的例子?
第二期一些命令沒有正確使用%input%並返回一個錯誤,就像它從未收到%input%一樣。
set /P INPUT=[Testone Input]: %testone%
set /P INPUT=[Testtwo Input]: %testtwo%
commandtorun.exe -f %testone% -h %testtwo%
謝謝!
注意:如果OP使用的是Windows XP,默認情況下「choice」不可用。 – michaelb958
真棒答案 - 我不能相信我使用set/P錯誤。你是對的,我基本上是通過不使用兩個不同的變量來覆蓋舊的輸入。現在工作,非常感謝!編輯:正如michaelb958說的那樣,我試過了。哦,回到設置/ P現在工作得很好:)謝謝 – Interrupt