Board logo

标题: 如何用变量的值替换另一个变量的值?? [打印本页]

作者: unixShell     时间: 2008-3-5 10:40    标题: 如何用变量的值替换另一个变量的值??

Code:
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=%test%%
目的是要用%test%替换%text%中#test#部分, 但发现扩展变量中遇到第一个%就返回了, 不知道如何实现,谢谢.
作者: pooronce     时间: 2008-3-5 10:52
好像是不能嵌套使用造成的,但可以变通点,这样:
setlocal enabledelayedexpansion
set text=1234567890#test#1234567890
set test=testing
echo %text:#test#=!test!%

作者: unixShell     时间: 2008-3-5 11:01


  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
作者: pooronce     时间: 2008-3-5 11:42
你自己确认一下,哪里打错了啥的:
[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]
作者: unixShell     时间: 2008-3-5 12:31


  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!%

作者: s11ss     时间: 2008-3-5 12:33

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

作者: pooronce     时间: 2008-3-5 15:12


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


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

问题不就已经结了,能echo了都
我知道你的疑问,你是想直接用而不是echo,那就再传递一次不就把%和!都剥光了啊
作者: unixShell     时间: 2008-3-5 15:18


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


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

我是没能试成功,
执行:  echo %text:#test#=!test!%
显示:  1234567890!test!1234567890
作者: pooronce     时间: 2008-3-6 14:11
谁叫你这样echo的,这样里面的变量才经过一次处理啊,当然!还在了
你可以再用个变量传递一次啊,没懂吗? 就是再把值赋给另外一个变量,然后再引用最后这个变量名用啊