choice.exe

choice.exe是批處理中的一個外部命令,從它的英文翻譯來看可以知道它是"選擇"的意思,顧名思義,choice在批處理中就是創建一個選擇項,不再需要用戶輸入1回車,Y回車。在批處理中,傳統的選擇命令的方式都是set /p,然後用%errorlevel%判斷選擇的是哪一項,這個選擇方式有一個缺點,就是每選一個都要輸入再回車。choice.exe的出現在一定層面上使批處理中"選擇"變得簡化。CHOICE /C choices /N /CS /T timeout /D choice /M text

基本介紹

  • 中文名:choice.exe
  • 定義:要創建的選項列表
  • 描述:允許用戶從選擇列表選擇一個項目
  • 示例::CHOICE /?
描述,參數列表,

描述

該工具允許用戶從選擇列表選擇一個項目並返回所選項目的索引。

參數列表

/C choices 指定要創建的選項列表。默認列表是 "YN"。
/N 在提示符中隱藏選項列表。提示前面的訊息得到顯示,
選項依舊處於啟用狀態。
/CS 允許選擇分大小寫的選項。在默認情況下,這個工具
是不分大小寫的。
/T timeout 做出默認選擇之前,暫停的秒數。可接受的值是從 0
到 9999。如果指定了 0,就不會有暫停,默認選項
會得到選擇。
/D choice 在 nnnn 秒之後指定默認選項。字元必須在用 /C 選
項指定的一組選擇中; 同時,必須用 /T 指定 nnnn。
/M text 指定提示之前要顯示的訊息。如果沒有指定,工具只
顯示提示。
/? 顯示幫助訊息。
注意:
ERRORLEVEL 環境變數被設定為從選擇集選擇的鍵索引。列出的第一個選
擇返回 1,第二個選擇返回 2,等等。如果用戶按的鍵不是有效的選擇,
該工具會發出警告響聲。如果該工具檢測到錯誤狀態,它會返回 255 的
ERRORLEVEL 值。如果用戶按 Ctrl+Break 或 Ctrl+C 鍵,該工具會返回 0
的 ERRORLEVEL 值。在一個批程式中使用 ERRORLEVEL 參數時,將參數降
序排列。
示例:
CHOICE /?
CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "選項 1 請選擇 a,選項 2 請選擇 b。"
CHOICE /C ab /N /M "選項 1 請選擇 a,選項 2 請選擇 b。"
現在下面舉幾個例子:
@echo off @echo off
choice /c 12c /n set /p a= 請輸入選擇:
if %errorlevel%==1 (echo 你選擇了1)if %errorlevel%==1 echo 你選擇了1
if %errorlevel%==2 (echo 你選擇了2)if %errorlevel%==2 echo 你選擇了2
if %errorlevel%==3 (echo 你選擇了c)if %errorlevel%==c echo 你選擇了c
pause>nul pause>nul
上面是set和choice的一點小差別,choice%errorlevel%是從1開始排列的,和選擇是一一對應的.而set有更大的自由度
下面說下/t 和/d
@echo off
choice /c 12 /n /t 6 /d 2
if %errorlevel%==1 (echo 你選擇了1)
if %errorlevel%==2 (echo 你選擇了2)
pause>nul
這個批處理是等待6秒無選擇的情況下自動選擇2.結果為"你選擇了2"
/m
這個其實是一個和echo差不多的參數,不過為了代碼的簡短性,很多人都會使用它.
@echo off @echo off
choice /c 12 /n /m "1.選擇1 2.選擇2" echo 1.選擇1 2.選擇2
if %errorlevel%==1 (echo 你選擇了1) choice /c 12 /n
if %errorlevel%==2 (echo 你選擇了2) if %errorlevel%==1 (echo 你選擇了1)
pause>nul if %errorlevel%==2(echo 你選擇了2
pause>nul
上面兩段代碼效果是一樣的,但左邊的卻比右邊的少了一行.
/cs
這個區分大小寫,也就是說a和A是兩個選擇.
@echo off
choice /c yY /n /cs
if %errorlevel%==1 (echo 你選擇了y)
if %errorlevel%==2 (echo 你選擇了Y)
pause>nul
這在一定程度上增加了選擇範圍
/n
@echo off
choice /c 12
if %errorlevel%==1 (echo 你選擇了1)
if %errorlevel%==2 (echo 你選擇了2)
pause>nul
沒有/n的話就出現[1,2]?,,事實上一般都是使用/n的.

熱門詞條

聯絡我們