本帖最后由 xiaolijian916 于 2021-7-19 21:24 编辑
总结下给后来的朋友提供参考:
发现[echo;%INP%],[echo:%INP%],[echo=%INP%],甚至[echo %INP%]写法都能正常执行
随后搜索了下跟效率有关,包括
【=,;】效率最高
【+/[]】效率其次
【:.\】效率最慢- set /P INP= ^> 请输入命令(P):
- REM 【第一种】正则表达式匹配采用BAT方式实现1(效率高)
- echo;%INP%|findstr /i "^[A-Q][1-3]$" >nul 2>&1 && (
- echo 匹配正确:%INP%
- goto dospause1
- ) || (
- echo 匹配不正确:%INP%
- goto dospause2
- )
复制代码
- set /P INP= ^> 请输入命令(P):
- REM 【第二种】正则表达式匹配采用BAT方式实现2(效率高)
- echo;%INP%|findstr /i "^[A-Q][1-3]$" >nul 2>&1
- if errorlevel 1 (
- echo 匹配不正确:%INP%
- goto dospause1
- ) else (
- echo 匹配正确:%INP%
- goto dospause2
- )
复制代码
- set /P INP= ^> 请输入命令(P):
- REM 【第三种】正则表达式匹配采用PS1方式实现(稍慢但扩展性强,支持任意格式正则匹配)
- for /f "delims=" %%a in ('powershell "'%INP%' -match '^[A-Q]{1}[1-3]{1}$'"') do (
- if %%a==True (
- goto dospause1
- ) else (
- goto dospause2
- )
- )
复制代码
|