最近写了一个在延迟环境变量下的字符替换的脚步,如下:
@echo off
setlocal enabledelayedexpansion
set /p str=字符串:
set /p old=请输入old:
set /p new=请输入new:
set str=!str:!old!=!new!!
echo !str!
pause
得到的结果却是oldnew,而不是我想要的替换字符的结果,如果把old和new两边的百分号改为感叹号,就可以,为什么?不是说延迟环境变量下,变量得用感叹号括起来的?而且输出的结果,也令人费解。
@echo off
setlocal enabledelayedexpansion
set /p str=字符串:
set /p old=请输入old:
set /p new=请输入new:
set str=!str:!old!=!new!!
echo !str!
pause
得到的结果却是oldnew,而不是我想要的替换字符的结果,如果把old和new两边的百分号改为感叹号,就可以,为什么?不是说延迟环境变量下,变量得用感叹号括起来的?而且输出的结果,也令人费解。

