batch-file - .bat 文件只接受字母且仅限于 6 个字符
问题描述
我需要下面的脚本只接受字母并允许最多 06 个字符,是否可以使用 .bat 进行此验证?
@Echo Off
SetLocal EnableDelayedExpansion
:Menu
ClS
Color 0A
Date /T
Time /T
Echo(
Echo Computador: %ComputerName% Usuario logado: %UserName%
Echo ========================
Echo * 1. PRODUCTION PASSWORD *
Echo * 2. TEST PASSWORD *
Echo * 3. EXIT *
Echo ========================
Echo(
"%__AppDir__%choice.exe" /C 123 /N /M "CHOOSE ONE OF THE OPTIONS:"
GoTo opcao%ErrorLevel% 2>NUL||GoTo opcao4
echo.
:opcao1
@echo off
echo ====================================================================
echo.
set /p "login=Enter your login: "
解决方案
@echo off
echo ====================================================================
echo.
:enterlogin
set /P login=Enter your login: %=%
echo.%login%| findstr /R "[^a-zA-Z]" >nul 2>&1
if ErrorLevel 1 (
if not "%login:~6%"=="" (
echo %login% - 6 CHARACTERS OR LESS
goto enterlogin
)
echo %login% - OK
) ELSE (
echo %login% - LETTERS ONLY
goto enterlogin
)
echo OK
pause
将%login:~6%
检查最大长度为 6,而正则表达式仅检查字母。如果其中任何一个测试都没有失败,它会完成回显“OK”并暂停。此代码会因大多数特殊字符而崩溃。要处理的,请参见下文:
@echo off
setlocal enabledelayedexpansion
echo ====================================================================
echo.
:enterlogin
set /P "login=Enter your login: %=%"
echo.!login!| findstr /R "[^a-zA-Z]" >nul 2>&1
if ErrorLevel 1 (
if not "!login:~6!"=="" (
echo !login! - 6 CHARACTERS OR LESS
goto enterlogin
)
echo !login! - OK
) ELSE (
echo !login! - LETTERS ONLY
goto enterlogin
)
echo OK
pause
推荐阅读
- php - DefHTMLHeaderByName 似乎不起作用 mpdf
- sparql - SPARQL 查询找不到应该存在的页面
- progressive-web-apps - PWA - beforeinstallprompt 未调用
- python - 如何在特定环境中安装 Python 包?
- vba - 消息不显示一次
- python - 使用 anaconda 在 Windows 上安装 spaCy 失败
- spring-security - 旧的 springframework 与 keycloak 一起使用
- microstrategy - 微观策略 10.2 重新填充相关表
- javascript - Node js从服务器提供文件体并在浏览器中下载
- excel - 带有“xlswrite”和“xlsread”的 Matlab 警告