中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-02 06:18
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何用变量的值替换另一个变量的值?? 查看 666 回复 8
楼 主 如何用变量的值替换另一个变量的值?? 发表于 2008-03-05 10:40 ·  中国 广东 广州 联通
初级用户
积分 22
发帖 8
注册 2008-03-05 10:13
18年会员
UID 112068
性别 男
状态 离线
Code:


set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=%test%%


目的是要用%test%替换%text%中#test#部分, 但发现扩展变量中遇到第一个%就返回了, 不知道如何实现,谢谢.
2 发表于 2008-03-05 10:52 ·  中国 上海 黄浦区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
好像是不能嵌套使用造成的,但可以变通点,这样:

setlocal enabledelayedexpansion
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=!test!%
3 发表于 2008-03-05 11:01 ·  中国 广东 广州 联通
初级用户
积分 22
发帖 8
注册 2008-03-05 10:13
18年会员
UID 112068
性别 男
状态 离线
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
4 发表于 2008-03-05 11:42 ·  中国 上海 黄浦区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
你自己确认一下,哪里打错了啥的:

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
5 发表于 2008-03-05 12:31 ·  中国 广东 广州 联通
初级用户
积分 22
发帖 8
注册 2008-03-05 10:13
18年会员
UID 112068
性别 男
状态 离线
Originally posted by pooronce at 2008-3-5 11:42 AM:
你自己确认一下,哪里打错了啥的:

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!%
6 发表于 2008-03-05 12:33 ·  中国 北京 电信
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
call echo %%text:#test#=%test%%%
7 发表于 2008-03-05 15:12 ·  中国 香港 第一线有限公司
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
Originally posted by unixShell at 2008-3-5 12:31 PM:


老兄,你那是直接echo吧, 要这样呢?

echo %text:#test#=!test!%


问题不就已经结了,能echo了都
我知道你的疑问,你是想直接用而不是echo,那就再传递一次不就把%和!都剥光了啊
8 发表于 2008-03-05 15:18 ·  中国 广东 广州 联通
初级用户
积分 22
发帖 8
注册 2008-03-05 10:13
18年会员
UID 112068
性别 男
状态 离线
Originally posted by pooronce at 2008-3-5 03:12 PM:


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


我是没能试成功,
执行: echo %text:#test#=!test!%
显示: 1234567890!test!1234567890
9 发表于 2008-03-06 14:11 ·  中国 上海 黄浦区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
谁叫你这样echo的,这样里面的变量才经过一次处理啊,当然!还在了
你可以再用个变量传递一次啊,没懂吗? 就是再把值赋给另外一个变量,然后再引用最后这个变量名用啊
论坛跳转: