在字符串中分别替换大写和小写

问题描述

我想让这个批次按预期工作,但它无法检测上下外壳(我不知道如何)。所以事情是这样的:

@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 具有特殊含义的字符(“毒药字符”)可能会导致问题。