问题描述
我想让这个批次按预期工作,但它无法检测上下外壳(我不知道如何)。所以事情是这样的:
@echo off
set /p letter="write letter: "
set var=%letter%
set result1=%var:M=7%
set result2=%result1:m=8%
echo %result2%
pause > nul
exit
暂时:
当我在字母变量中写“M”时,我得到 7
当我在字母变量中写“m”时,我也得到 7(因为它已经被转换了)
我想要的:
当我写“M”时,我得到 7
当我写“m”时,我得到 8
当我写“Mm”时,我得到 78
有什么帮助吗?我想保持简单,因为我是新手,谢谢
解决方法
@ECHO Off
SETLOCAL
SET "string=string containing M and m"
SET "newstring="
:loop
IF DEFINED string (
IF "%string:~0,1%" == "M" (
SET "Newstring=%newstring%7"
) ELSE (
IF "%string:~0,1%" == "m" (
SET "Newstring=%newstring%8"
) ELSE (
SET "Newstring=%newstring%%string:~0,1%"
)
)
SET string
SET "string=%string:~1%"
GOTO loop
)
ECHO newstring=%newstring%
GOTO :EOF
对 cmd
具有特殊含义的字符(“毒药字符”)可能会导致问题。