Board logo

标题: [文本处理] 求助 批处理代码 输入时需要判断大小写,怎么让大小写兼容 [打印本页]

作者: haichuan5121    时间: 2023-5-29 18:56     标题: 求助 批处理代码 输入时需要判断大小写,怎么让大小写兼容

个人想法是让输入后的大写字母转成小写再匹配,但始终报错,大神帮看下 第5行哪里错了 怎么修改;Lcase不就是转换语法吗
  1. @echo off
  2. color 0a
  3. setlocal EnableDelayedExpansion
  4. :yy
  5. set /p LotID=请输入Lot ID: & set "LotID=!LotID:lcase=!"
  6. if not "%LotID:~0,2%"=="1a" set "gs=t"
  7. if "%gs%"=="t" echo Lot ID输入错误!&endlocal&goto yy
  8. echo %LotID:~6,4%|findstr "^[0-9]*$" >nul|| (
  9.   echo\&echo Lot ID输入错误!
  10.   endlocal&goto yy
  11. )
复制代码

作者: 77七    时间: 2023-5-29 22:38

Lcase不就是转换语法吗

批处理没有这个语法吧
搜索 大小写转换
作者: Batcher    时间: 2023-5-29 23:02

回复 1# haichuan5121


if /i 可以直接忽略大小写,这样算不算兼容:
  1. set "LotID=1A"
  2. if /i "%LotID%" equ "1a" (
  3.     echo Yes
  4. ) else (
  5.     echo No
  6. )
复制代码

作者: haichuan5121    时间: 2023-5-30 10:18

回复 3# Batcher


    这个是根据提示需要输入小写的十位数 ID的;如果输入大写就会提示报错,想要实现结果是 如果我不小心输入大写了,代码内部转成小写,然后就可以执行后面的操作了;怎么修改
@echo off
color 0a
:yy
setlocal
set /p LotID=请输入Lot ID(小写):

if not "%lotid:~0,2%"=="1a" set "gs=t"
if "%gs%"=="t" echo Lot ID输入错误!&endlocal&goto yy
echo %lotid:~6,4%|findstr "^[0-9]*$" >nul|| (
  echo\&echo Lot ID输入错误!
  endlocal&goto yy
)
set "str=%lotid%"
set "str=%str:"= %"
:next
if not "%str%"=="" (
    set /a num+=1
    set "str=%str:~1%"
    goto next
)
if not "%num%"=="10" set "chd=aa"
if "%chd%"=="aa" echo Lot ID输入错误!&endlocal&goto yy
set "a=%LotID:~0,6%"
set "b=%LotID:~6,2%"
set "c=%LotID:~8,2%"
作者: Batcher    时间: 2023-5-30 22:59

回复 4# haichuan5121


请给两个输入的例子,一个正确的,一个错误。
分别描述一下,两种输入你分别希望代码执行到哪里。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2