You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本中实现CMD用户输入转小写用于IF判断的方法

解决CMD脚本中用户输入转小写用于IF判断的问题

嘿,我明白你的痛点——想要让CMD脚本里的用户输入不区分大小写,这样不管用户输Red、RED还是red,都能正确匹配判断对吧?我给你两种实用的解决方法,覆盖不同场景需求:

方法1:纯CMD原生实现(兼容性拉满)

这种方法不用依赖任何外部工具,纯靠CMD的字符串替换功能实现大小写转换,适合所有Windows版本:

@echo off
setlocal enabledelayedexpansion

set "colour=Default"
:WrongColour
echo Please choose one of the supported colours for the name(Red,Blue or Green):
set /p "colour="

:: 把输入的所有大写字母替换为小写
set "lower_colour=!colour!"
set "lower_colour=!lower_colour:A=a!"
set "lower_colour=!lower_colour:B=b!"
set "lower_colour=!lower_colour:C=c!"
set "lower_colour=!lower_colour:D=d!"
set "lower_colour=!lower_colour:E=e!"
set "lower_colour=!lower_colour:F=f!"
set "lower_colour=!lower_colour:G=g!"
set "lower_colour=!lower_colour:H=h!"
set "lower_colour=!lower_colour:I=i!"
set "lower_colour=!lower_colour:J=j!"
set "lower_colour=!lower_colour:K=k!"
set "lower_colour=!lower_colour:L=l!"
set "lower_colour=!lower_colour:M=m!"
set "lower_colour=!lower_colour:N=n!"
set "lower_colour=!lower_colour:O=o!"
set "lower_colour=!lower_colour:P=p!"
set "lower_colour=!lower_colour:Q=q!"
set "lower_colour=!lower_colour:R=r!"
set "lower_colour=!lower_colour:S=s!"
set "lower_colour=!lower_colour:T=t!"
set "lower_colour=!lower_colour:U=u!"
set "lower_colour=!lower_colour:V=v!"
set "lower_colour=!lower_colour:W=w!"
set "lower_colour=!lower_colour:X=x!"
set "lower_colour=!lower_colour:Y=y!"
set "lower_colour=!lower_colour:Z=z!"

:: 用转换后的小写变量做判断
if "!lower_colour!"=="red" (
    goto :SupportedColour
) else if "!lower_colour!"=="blue" (
    goto :SupportedColour
) else if "!lower_colour!"=="green" (
    goto :SupportedColour
) else (
    echo Wrong colour! Please try again.
    goto :WrongColour
)

:SupportedColour
echo You chose a valid colour: %colour%
endlocal
exit /b

关键说明:

  • 我们启用了enabledelayedexpansion(延迟扩展),这样在同一代码块里修改变量后能立刻获取到新值。
  • 通过逐个替换26个大写字母为小写,实现了输入的全小写转换,不管用户输入什么大小写组合都能统一。
  • 判断时用双引号包裹变量和目标值,避免用户输入带空格时出现语法错误。

方法2:借助PowerShell简化代码(更简洁)

如果你的脚本不需要兼容Windows XP这类老系统,用PowerShell可以大幅简化代码:

@echo off
setlocal

set "colour=Default"
:WrongColour
echo Please choose one of the supported colours for the name(Red,Blue or Green):
set /p "colour="

:: 调用PowerShell将输入转成小写
for /f "delims=" %%a in ('powershell -Command "$env:colour.ToLower()"') do set "lower_colour=%%a"

:: 统一用小写变量判断
if "%lower_colour%"=="red" (
    goto :SupportedColour
) else if "%lower_colour%"=="blue" (
    goto :SupportedColour
) else if "%lower_colour%"=="green" (
    goto :SupportedColour
) else (
    echo Wrong colour! Please try again.
    goto :WrongColour
)

:SupportedColour
echo Valid colour selected: %colour%
endlocal
exit /b

关键说明:

  • 利用PowerShell的字符串方法ToLower()直接完成转换,代码更短更易维护。
  • 通过for /f捕获PowerShell的输出,赋值给CMD变量lower_colour。
  • 这种方法需要系统安装PowerShell(Windows 7及以上默认自带)。

额外注意事项

  • 不管用哪种方法,都要确保set /p的变量用双引号包裹(比如set /p "colour="),避免输入包含特殊字符时出问题。
  • 如果需要支持更多颜色,只需要在IF判断里添加对应的小写值即可,不用修改转换逻辑。

内容的提问来源于stack exchange,提问作者Andrei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:01:26