bat for中如何让系统把变量中的()不当成do的()来识别

set before=aaaaa
set after=aabbccdd(476)
for /f %%a in ("123.txt") do (
set aa=%%a
set aa=!aa:%before%=%after%!
)
当系统读到%after%,就认为after中的)为do的)就结束了,导致BAT认为后面的是错误语法,如何解决变量中的 )
set startBEFORE=* 该内容涉及商业机密(只能给出特殊符号问题) ======
set endAFTER=BBBB
set "aa=!aa:%startBEFORE%=%endAFTER%!"
加""好用了。但是又出现了一个问题
我的实际替换之前的内容是 * 该内容涉及商业机密(只能给出特殊符号问题) ======
也就是
set startBEFORE=* 该内容涉及商业机密(只能给出特殊符号问题) ======
这句 set "aa=!aa:%startBEFORE%=%endAFTER%!" 系统把我变量中的第一个=号认为是:%startBEFORE%=%endAFTER%! 的这个等号了。
我替换之前内容 * 该内容涉及商业机密(只能给出特殊符号问题) ======
替换之后内容是 ======BBBB
再麻烦你帮我解决下=号问题,我是个新手半吊子

set命令加引号
set aa=!aa:%before%=%after%!
改为
set "aa=!aa:%before%=%after%!"
你的for语句不是读文件的写法,应改为
for /f %%a in (123.txt) do (
或者
for /f "usebackq" %%a in ("123.txt") do (追问

不好用阿我把我的代码都发上来,其功能是对文件的内容进行修改替换 * AAAA(113)改成BBBB
@echo off
set ipoID=kkks1ctl
set startBEFORE=* AAAA(113)
set endAFTER=BBBB

追答

你没按我的回答写,涉及括号的set命令要加引号,
for语句文件名不加引号,如果加引号,/f 后面就必须加usebackq
你把按我的要求修改后的代码发上来。

追问

按照你说的我改完了,还是不好用,代码在上面的问题补充里。

追答

enabledelayedexpansion 你少写了一个字母
for /f "delims=" 读取整行
set "aa=%%a" 也要加引号
bat的字符串不能替换某些特殊字符。
替换字符中有星号,替换结果可能是错的。

追问

再追问以下哈,内容在上面追问

追答

bat 不能替换某些特殊字符,不能解决等号星号的问题。
你还是学vbs,用vbs解决吧。

追问

好吧。谢谢你。分还是给你,不知道你有没有哪个学习BAT的好地方。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-28
转义 "^" ^(^)追问

转义怎么转,我试过在变量赋值的时候给^)^ 但是不好用啊。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网