簡體   English   中英

確認用戶輸入是幾個允許的單詞之一

[英]Verify that user input is one of several allowed words

所以我在這行代碼上遇到了麻煩,該行代碼旨在檢查用戶輸入是否匹配給定的選項。

set /p "myVar=---> " 
echo %myVar%|findstr /ix "red:Red:blue:Blue">nul && ( 
 echo %myVar% matched 
 ) || ( 
 echo %myVar% not matched 
 ) 

有沒有辦法像上面那樣或其他方式去做?

您可以利用以下事實: for /F ,在零迭代的情況下返回退出代碼1

set /P VAR="Enter something: " || ((echo Empty input!) & exit /B)
(for /F "delims=AaEeIiOoUuYy eol=y" %%K in ("%VAR%") do rem/) && (
    echo No match found!
) || (
    echo Match encountered.
)

如果輸入僅包含delims=之后列出的字符,則for /F循環不會進行迭代,並返回退出代碼1 &&后面的命令僅在退出代碼為0時執行, ||后面的命令 僅在退出代碼不為0情況下執行。
如果未提供任何輸入,則set /P將退出代碼設置為1

這是您要做什么的一個基本示例。 我沒有在DOS中進行測試,因為我這里沒有任何VM(或非常舊的計算機),但是IIRC也應在純DOS中工作。

@echo off
if %var% == A GOTO :anything
if %var% == E GOTO :anything
if %var% == I GOTO :anything
if %var% == O GOTO :anything
if %var% == U GOTO :anything
if %var% == Y GOTO :anything
goto end
:anything
echo anything
:end

我認為, choice是您最好的朋友。 但是,如果您想不做choice (並非在所有Windows版本中都可用):

set /p "myVar=---> "
echo %myVar%|findstr /ix "a e i o u y">nul && (
  echo %myVar% matched
) || (
  echo %myVar% not matched
)

它要求輸入並檢查它是否正是列表中的字符之一,而忽略大小寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM