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

[文本处理] set %str:1+1=2=2+2=4%这样的替换批处理如何实现?

如题. 用了脱字符也不行~

等号无解

TOP

看不懂题目了。请楼主换一种方式描述好吗?

TOP

如果单纯的用这个方法是实现不了的,还是结合其它的命令吧
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

看不懂题目了。请楼主换一种方式描述好吗?
BAT1 发表于 2011-10-5 14:56



    意思就是:把 1+1=2这样的变量替换成2+2=4。

TOP

如果单纯的用这个方法是实现不了的,还是结合其它的命令吧
wc726842270 发表于 2011-10-5 14:58



    恳请指教!

TOP

  1. @echo off
  2. set "str=1+1=2"
  3. for /f "tokens=1* delims==" %%i in ("%str%") do set "str2=%%i#%%j"
  4. echo %str:1+1#2=2+2=4%
  5. pause
复制代码
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

本帖最后由 FOR 于 2011-10-5 15:24 编辑
  1. @echo off
  2. set str=1+1+5+8
  3. set "str=%str:1+1=2=2+2=4%"
  4. echo %str%
  5. pause
复制代码
等号无法替换

TOP

偏移法最简单,我就不说了,但是这种算法存在效率问题,进行些许提速,不过变得很冗长很麻烦,各有利弊吧...
  1. @echo off&setlocal enabledelayedexpansion
  2. set var=1+123q ewfer 3qfasd efqer 1+1=2=2+2=4 awefawe
  3. set str1=1+1=2=2+2=4
  4. set str2=3+3=6
  5. set len=11
  6. ::var 为要修改的字符串,str1 为被替换的内容,len 为 str1 的字符长度,str2 为替换后的内容
  7. echo 修改前 !var!
  8. for /f %%z in ("!str1!") do (
  9. for /l %%a in (0 75 8189) do (
  10. set test=!var:~%%a,100!
  11. if "!test:%%z=!" neq "!test!" (
  12. for /l %%b in (0 1 99) do (
  13. if "!test:~%%b,%len%!"=="!str1!" (
  14. set /a a=%%a+%%b,b=%%a+%%b+len
  15. for /f "tokens=1,2" %%c in ("!a! !b!") do set var=!var:~,%%c!!str2!!var:~%%d!
  16. )
  17. )
  18. )
  19. )
  20. )
  21. echo 修改后 !var!
  22. pause
复制代码

TOP

返回列表