首页 > 解决方案 > .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: "

标签: batch-file

解决方案


@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

推荐阅读