Board logo

标题: [求助]怎么用set的替换字符功能? [打印本页]

作者: kingerpk     时间: 2009-2-3 22:22    标题: [求助]怎么用set的替换字符功能?
我为了练习for写了这么一句
for %%a in (a123,a465,a789) do (
set b=%%a
set c=%b:a=a被替换%
echo %C%
)
pause
但是最后输出的%c%是空的。 我认为是变量延时的问题就改成这样:
setlocal enabledelayedexpansion
for !!a in (a123,a465,a789) do (set b=!!a
set c=!b:a=a被替换!
echo !C!
)
pause
但结果使我更无奈:批处窗口一闪而过~~~~~失败~~~~~~ 为什么会这样啊? 还请大家指点指点!!!! ———————————————————————————————— 转移自 DOS疑难解答 & 问题讨论 (解答室) 明显发错版块。因属论坛新手,故暂不予以处罚,望今后引起注意。 ——管理员 ————————————————————————————————

作者: 523066680     时间: 2009-2-3 22:58
管理员准备转移这个帖子吧 喀喀喀。。。。 回复: for 部分的变量傍边的%% 不用改成!!

作者: HAT     时间: 2009-2-3 23:13
变量延迟详解 www.cn-dos.net/forum/viewthrea ... 什么情况下该使用变量延迟 www.cn-dos.net/forum/viewthrea ... 一个变量嵌套变量的问题 www.cn-dos.net/forum/viewthrea ...

作者: yishanju     时间: 2009-2-4 15:30
晕,为什么楼主没写对代码 没人说 字符串要用引号括起来
setlocal enabledelayedexpansion
for %%a in ("a123,a465,a789") do (set b=%%a
	set c=!b:a=a被替换!
	echo !C!
)
pause
没用引号的话被被当成文件处理,单引括起来的会被以当成命令执行 [ Last edited by yishanju on 2009-2-4 at 15:32 ]

作者: zhengqian529     时间: 2009-2-4 15:59
经过测试,楼上正解。 问题出在延时是对的,可是 for !!a in (a123,a465,a789) do (set b=!!a 这个里面的a不能使用!!,要写为%%a

作者: hongtashan     时间: 2009-2-6 00:18
凡是要在for语句后,再次调用你原先定义的变量,就要用变量延迟; 还有在需要使用变量里套变量也可以使用变量延迟