中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 09:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]怎么用set的替换字符功能? 查看 835 回复 5
楼 主 [求助]怎么用set的替换字符功能? 发表于 2009-02-03 22:22 ·  中国 广东 深圳 福田区 电信
新手上路
积分 13
发帖 4
注册 2009-01-31 14:04
UID 137700
性别 男
状态 离线
我为了练习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疑难解答 & 问题讨论 (解答室)
明显发错版块。因属论坛新手,故暂不予以处罚,望今后引起注意。
——管理员
————————————————————————————————
2 发表于 2009-02-03 22:58 ·  中国 广东 广州 电信
银牌会员
★★★★
SuperCleaner
积分 2,362
发帖 1,133
注册 2008-02-02 21:36
UID 110072
性别 男
状态 离线
管理员准备转移这个帖子吧 喀喀喀。。。。


回复: for 部分的变量傍边的%% 不用改成!!
3 发表于 2009-02-03 23:13 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
4 发表于 2009-02-04 15:30 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
晕,为什么楼主没写对代码
没人说

字符串要用引号括起来
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 ]

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2009-02-04 15:59 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
UID 136661
性别 男
来自 湖南
状态 离线
经过测试,楼上正解。
问题出在延时是对的,可是
for !!a in (a123,a465,a789) do (set b=!!a
这个里面的a不能使用!!,要写为%%a
6 发表于 2009-02-06 00:18 ·  中国 河北 石家庄 电信
新手上路
积分 4
发帖 3
注册 2008-05-12 20:52
UID 118518
性别 男
状态 离线
凡是要在for语句后,再次调用你原先定义的变量,就要用变量延迟;
还有在需要使用变量里套变量也可以使用变量延迟
论坛跳转: