validation已在批处理脚本中input了数字“X”

编写批处理脚本。 如何validation“3”NUMERIC数字是由用户用“/ p”提示符input的?

提示给用户:

SET /P SITEID=ENTER SITE # (ie 001 - MUST BE 3 DIGITS): 

我需要validation3位数已经input,如果好继续脚本。 如果不好再提示用户给我select的消息。

 @echo off setlocal set "Input=" :Prompt set /p "Input=ENTER SITE # (ie 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 

脚本说明:

  • 提示输入
  • 验证输入
  • 删除中毒报价字符
  • 验证输入只有数字
  • 删除前导0作比较
  • 验证输入小于1000
  • 加回前导0
  • 显示成功
  • 如果任何验证失败,则再次提示用户

更新:

  • 修复领先0删除
  • 添加如何添加前导0的例子
 :loop SET /P "SITEID=ENTER SITE # (ie 001 - MUST BE 3 DIGITS):" echo("%SITEID:"= %"|findstr /rbe /c:"""[0-9][0-9][0-9]""" >nul || ( echo FAIL & goto loop ) 

它使用%SITEID%变量,删除引号(如果存在),并将数据发送到findstr以对正则表达式( /r开关)进行测试:在数据开始( /b开关)初始引号(来自echo命令)字符,关闭引号(来自echo命令)和字符串结尾( /e开关)。 如果findstr没有找到匹配,则设置errorlevel, ||之后的代码 被执行,打印一条消息到控制台返回:loop标签再次询问。