中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]怎么用set的替换字符功能?
作者:
标题: [求助]怎么用set的替换字符功能? 上一主题 | 下一主题
kingerpk
新手上路





积分 13
发帖 4
注册 2009-1-31
状态 离线
『楼 主』:  [求助]怎么用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疑难解答 & 问题讨论 (解答室)
明显发错版块。因属论坛新手,故暂不予以处罚,望今后引起注意。
——管理员
————————————————————————————————


2009-2-3 22:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
523066680
银牌会员

SuperCleaner


积分 2362
发帖 1133
注册 2008-2-2
状态 离线
『第 2 楼』:  

管理员准备转移这个帖子吧 喀喀喀。。。。


回复: for 部分的变量傍边的%% 不用改成!!



综合型编程论坛

我的作品索引
  
2009-2-3 22:58
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (523066680)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

变量延迟详解
http://www.cn-dos.net/forum/viewthread.php?tid=28273

什么情况下该使用变量延迟
http://www.cn-dos.net/forum/viewthread.php?tid=20733

一个变量嵌套变量的问题
http://www.cn-dos.net/forum/viewthread.php?tid=41143



2009-2-3 23:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

晕,为什么楼主没写对代码
没人说

字符串要用引号括起来
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
2009-2-4 15:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhengqian529
初级用户





积分 100
发帖 93
注册 2009-1-14
来自 湖南
状态 离线
『第 5 楼』:  

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

2009-2-4 15:59
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (250988158)  编辑帖子  回复  引用回复
hongtashan
新手上路





积分 4
发帖 3
注册 2008-5-12
状态 离线
『第 6 楼』:  

凡是要在for语句后,再次调用你原先定义的变量,就要用变量延迟;
还有在需要使用变量里套变量也可以使用变量延迟

2009-2-6 00:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: