有没有办法(通过标记或其他方式)在批处理脚本中使用Set /p ignore
大写字母?
答案 0 :(得分:3)
或者,根据您计划对用户输入执行的操作,如果要在decaceion中使用它,则可以使用/I
命令的IF
开关。请参阅HELP IF
。
Set /P TEXT=Choose an option:
IF /I %TEXT%==A ( echo DOA
) ELSE ( IF /I %TEXT%==B ( echo DOB
) ELSE ( IF /I %TEXT%==C ( echo DOC
) ELSE ( echo DONOTHING )))
答案 1 :(得分:3)
大写到小写:
@echo off
:main
cls
set str=
set /p str= input(Press enter to exit):
if not defined str exit
cls
echo.
echo Before:"%str%"
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do call set str=%%str:%%i=%%i%%
echo ____________________________________________
echo.
echo After:"%str%"
echo.
echo Press Any Key To Convert again
pause>nul
goto main
答案 2 :(得分:2)
如果我们编写自己的readline例程,set /P
命令的所有输入限制(包括此命令)都可以解决。这是基本版本:
@echo off
rem Insert next line if needed:
SETLOCAL DISABLEDELAYEDEXPANSION
set exclam=!
set caret=^^
setlocal EnableDelayedExpansion
set ascii=01234567890123456789012345678901^
!exclam!^"#$%%^&'()*+,-./0123456789:;^<=^>?^
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]!caret!^_^
`abcdefghijklmnopqrstuvwxyz{^|}~
for /F %%a in ('echo prompt $H ^| cmd') do set BS=%%a
set lineread=
:nextkey
getakey
set code=%errorlevel%
if %code% lss 32 goto checkBS
:ascii
set char=!ascii:~%code%,1!
colormsg 7 "!char!"
set lineread=!lineread!!char!
goto nextkey
:checkBS
if not %code% == 8 goto checkExtended
if "!lineread!" == "" goto nextkey
colormsg 7 "%BS% %BS%"
set lineread=!lineread:~0,-1!
goto nextkey
:checkExtended
if not %code% == 0 goto checkCR
getakey
goto nextkey
:checkCR
if not %code% == 13 goto nextkey
echo/
ECHO Line Read: [!lineread!]
例如,如果要忽略输入上的大写字母,只需在:ascii
标签后插入这两行:
:ascii
rem If key is between A (65) and Z (90): ignore it
if %code% geq 65 if %code% leq 90 goto nextkey
将大写字母转换为小写字母:
:ascii
rem If key is upcase (between A-65 and Z-90): convert it to lowcase (a-97 z-122)
if %code% geq 65 if %code% leq 90 set /A code+=32
我们甚至可以编写一个异步(并发)readline例程,允许批处理文件在读取行的同时继续运行。
以前在这个问题中给出了GETAKEY.COM和COLORMSG.COM程序:Batch Color per line
答案 3 :(得分:1)
我不知道忽略,但您可以将它们转换为小写。
Set /P Text=Please type something:
Set Text=%Text:A=a%
Set Text=%Text:B=b%
Set Text=%Text:C=c%
...
Echo %Text%
如果您想使用For
命令转换为小写:
Set Text /P=Please type something:
For %%i In ("A=a" "B=b" "C=c" ...) Do Call Set "Text=%%Text:%%~i%%"
Echo %Text%
或将"A=a"
替换为"A="
等,以删除大写字母。
答案 4 :(得分:1)
Rob的救援网站:以下是批量案例转换的fleshed-out examples。