标题: [文本处理] set %str:1+1=2=2+2=4%这样的替换批处理如何实现? [打印本页]
作者: cyfoslh 时间: 2011-10-5 14:04 标题: set %str:1+1=2=2+2=4%这样的替换批处理如何实现?
如题. 用了脱字符也不行~
作者: CrLf 时间: 2011-10-5 14:06
等号无解
作者: BAT1 时间: 2011-10-5 14:56
看不懂题目了。请楼主换一种方式描述好吗?
作者: wc726842270 时间: 2011-10-5 14:58
如果单纯的用这个方法是实现不了的,还是结合其它的命令吧
作者: cyfoslh 时间: 2011-10-5 15:03
看不懂题目了。请楼主换一种方式描述好吗?
BAT1 发表于 2011-10-5 14:56
意思就是:把 1+1=2这样的变量替换成2+2=4。
作者: cyfoslh 时间: 2011-10-5 15:04
如果单纯的用这个方法是实现不了的,还是结合其它的命令吧
wc726842270 发表于 2011-10-5 14:58
恳请指教!
作者: wc726842270 时间: 2011-10-5 15:23
- @echo off
- set "str=1+1=2"
- for /f "tokens=1* delims==" %%i in ("%str%") do set "str2=%%i#%%j"
- echo %str:1+1#2=2+2=4%
- pause
复制代码
作者: FOR 时间: 2011-10-5 15:23
本帖最后由 FOR 于 2011-10-5 15:24 编辑
- @echo off
- set str=1+1+5+8
- set "str=%str:1+1=2=2+2=4%"
- echo %str%
- pause
复制代码
等号无法替换
作者: CrLf 时间: 2011-10-5 20:22
偏移法最简单,我就不说了,但是这种算法存在效率问题,进行些许提速,不过变得很冗长很麻烦,各有利弊吧...- @echo off&setlocal enabledelayedexpansion
- set var=1+123q ewfer 3qfasd efqer 1+1=2=2+2=4 awefawe
- set str1=1+1=2=2+2=4
- set str2=3+3=6
- set len=11
- ::var 为要修改的字符串,str1 为被替换的内容,len 为 str1 的字符长度,str2 为替换后的内容
-
- echo 修改前 !var!
- for /f %%z in ("!str1!") do (
- for /l %%a in (0 75 8189) do (
- set test=!var:~%%a,100!
- if "!test:%%z=!" neq "!test!" (
- for /l %%b in (0 1 99) do (
- if "!test:~%%b,%len%!"=="!str1!" (
- set /a a=%%a+%%b,b=%%a+%%b+len
- for /f "tokens=1,2" %%c in ("!a! !b!") do set var=!var:~,%%c!!str2!!var:~%%d!
- )
- )
- )
- )
- )
- echo 修改后 !var!
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |