中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何用变量的值替换另一个变量的值??
作者:
标题: 如何用变量的值替换另一个变量的值?? 上一主题 | 下一主题
unixShell
初级用户





积分 22
发帖 8
注册 2008-3-5
状态 离线
『楼 主』:  如何用变量的值替换另一个变量的值??

Code:
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=%test%%
目的是要用%test%替换%text%中#test#部分, 但发现扩展变量中遇到第一个%就返回了, 不知道如何实现,谢谢.

2008-3-5 10:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 2 楼』:  

好像是不能嵌套使用造成的,但可以变通点,这样:
setlocal enabledelayedexpansion
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=!test!%


2008-3-5 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
unixShell
初级用户





积分 22
发帖 8
注册 2008-3-5
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by pooronce at 2008-3-5 10:52 AM:
好像是不能嵌套使用造成的,但可以变通点,这样:
setlocal enabledelayedexpansion
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=!test!%

Hi, 我也曾试过用延迟,出来的结果是:
1234567890!test!1234567890

2008-3-5 11:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 4 楼』:  

你自己确认一下,哪里打错了啥的:
[shell]
F:\pe>test

F:\pe>setlocal enabledelayedexpansion

F:\pe>set text=1234567890#test#1234567890

F:\pe>set test=testing

F:\pe>echo 1234567890!test!1234567890
1234567890testing1234567890
[/shell]

2008-3-5 11:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
unixShell
初级用户





积分 22
发帖 8
注册 2008-3-5
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by pooronce at 2008-3-5 11:42 AM:
你自己确认一下,哪里打错了啥的:
[shell]
F:\pe>test

F:\pe>setlocal enabledelayedexpansion

F:\pe>set text=1234567890#test#1234567890

F:\pe>set test=testing

F: ...

老兄,你那是直接echo吧, 要这样呢?
echo %text:#test#=!test!%


2008-3-5 12:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 6 楼』:  


call echo %%text:#test#=%test%%%


2008-3-5 12:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by unixShell at 2008-3-5 12:31 PM:


老兄,你那是直接echo吧, 要这样呢?
echo %text:#test#=!test!%

问题不就已经结了,能echo了都
我知道你的疑问,你是想直接用而不是echo,那就再传递一次不就把%和!都剥光了啊

2008-3-5 15:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
unixShell
初级用户





积分 22
发帖 8
注册 2008-3-5
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by pooronce at 2008-3-5 03:12 PM:


问题不就已经结了,能echo了都
我知道你的疑问,你是想直接用而不是echo,那就再传递一次不就把%和!都剥光了啊

我是没能试成功,
执行:  echo %text:#test#=!test!%
显示:  1234567890!test!1234567890

2008-3-5 15:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pooronce
中级用户





积分 484
发帖 250
注册 2007-6-5
状态 离线
『第 9 楼』:  

谁叫你这样echo的,这样里面的变量才经过一次处理啊,当然!还在了
你可以再用个变量传递一次啊,没懂吗? 就是再把值赋给另外一个变量,然后再引用最后这个变量名用啊

2008-3-6 14:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: