编写批处理脚本。如何通过“/ p”提示验证用户输入的“3”NUMERIC位数?
提示用户:
SET /P SITEID=ENTER SITE # (i.e. 001 - MUST BE 3 DIGITS):
我需要验证已经输入了3位数字,如果继续使用脚本的话。如果没有好的重新提示用户我选择的消息。
答案 0 :(得分:1)
@echo off
setlocal
set "Input="
:Prompt
set /p "Input=ENTER SITE # (i.e. 001 - MUST BE 3 DIGITS): "
if not defined Input goto Prompt
set "Input=%Input:"=%"
for /f "delims=0123456789" %%A in ("%Input%") do goto Prompt
for /f "tokens=1* delims=0" %%A in ("10%Input%") do set "Input=%%B"
if %Input%0 geq 10000 goto Prompt
set "Input=000%Input%"
set "Input=%Input:~-3%"
echo Success = %Input%
pause
endlocal
exit /b 0
脚本说明:
更新
答案 1 :(得分:0)
:loop
SET /P "SITEID=ENTER SITE # (i.e. 001 - MUST BE 3 DIGITS):"
echo("%SITEID:"= %"|findstr /rbe /c:"""[0-9][0-9][0-9]""" >nul || ( echo FAIL & goto loop )
它需要%SITEID%
变量,删除引号(如果存在)并将数据发送到findstr
以测试正则表达式(/r
开关):在数据的开头({{ 1}} switch)初始引用(来自/b
命令)三个数字字符,一个结束引用(来自echo
命令)和结束字符串(echo
开关)。如果/e
找不到匹配项,则设置errorlevel并执行findstr
之后的代码,打印一条消息给控制台并返回||
标签再次询问。