[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何进行特殊文本的替换?

@echo off
setlocal EnableDelayedExpansion
set bb=
set str=12 = 3
set x=2 = 3
set y=A = B
set bb=!str:%x%=%y%!
echo %bb%
pause

我想要得到的结果是这样的,但我自己搞不定。
比如:
原始字符串:12 = 3。字符串中的 2 = 3 替换成 A = B,结果字串为:1A = B
原始字符串:12 ! 3。字符串中的 2 ! 3 替换成 A = B,结果字串为:1A = B

只要想替换的字符串中存在 空格,!,=,等特殊符号时,就无法进行正常替换,谁可以帮我解决一下。

问题描述的不够清楚:
把某文本中的 "12 = 3"  替换为 "1A = B"
"12 ! 3"  替换为 "1A = B"  ?????

TOP

原帖由 hfg1977 于 2011-2-28 23:46 发表
问题描述的不够清楚:
把某文本中的 "12 = 3"  替换为 "1A = B"
"12 ! 3"  替换为 "1A = B"  ?????


不是,我是想 2 !3 变成 A = B,并不包括数字1

TOP

"setlocal EnableDelayedExpansion"要放在合适的位置,另外"!str:%x%=%y%!"这种方式的替换是以第一个等号为识别符号的.所以请慎用
  1. @echo off
  2. set bb=
  3. set str=12 ! 3
  4. set x=2 ! 3
  5. set y=A = B
  6. setlocal EnableDelayedExpansion
  7. set bb=!str:%x%=%y%!
  8. echo.%bb%
  9. pause
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

感觉楼上的代码不对,解释%x%变量的动作是在分割语句之前进行的,而!是在解释语句之后再分析的,也就是说楼上开启变量扩展后还用%x%这种方式来指代含!的变量会被先解释%x%,再分析语句,再解释!str:2 !。
理论经验,未测试

TOP

返回列表