|
hongewuyan
初级用户
积分 65
发帖 29
注册 2008-3-24
状态 离线
|
『楼 主』:
[已结]一个变量嵌套变量的问题
请教一个问题,有一个功能一直不知道如何实现.
举例如下:
先设置下面两个变量:
set a=1
set b1=10
然后执行 echo %b%a%% 得到 %b1%
其实我想得到的是 赋予b1的值,即 10
请问大家能否实现呢?
[ Last edited by HAT on 2008-12-23 at 10:10 ]
|
|
2008-6-23 17:02 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
2 楼』:
@echo off
set a=1&set b1=10
call,echo %%b%a%%%
pause>nul
|
批处理之家新域名:www.bathome.net |
|
2008-6-23 17:15 |
|
|
hongewuyan
初级用户
积分 65
发帖 29
注册 2008-3-24
状态 离线
|
『第
3 楼』:
果然可以实现
谢谢楼上的高手.
不过还是有些疑问
call,echo %%b%a%%%
这行可以解释下么? call, 做何解?
我直接 echo %%b%a%%% 就不可以,加上就可以了...
call不是调用其他批处理或标签的么...而且后面那个逗号也不懂 - -
|
|
2008-6-23 17:33 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
4 楼』:
Quote: | Originally posted by hongewuyan at 2008-6-23 17:33:
果然可以实现
谢谢楼上的高手.
不过还是有些疑问
call,echo %%b%a%%%
这行可以解释下么? call, 做何解?
我直接 echo %%b%a%%% 就不可以,加上就可以了. ... |
|
call 这里实际是对命令行进行重新组织扩展,先扩展%%b%a%%%里面的%a%,使%a%变成a的值1,再用cal来扩展%b1%。
也可以用变量延迟来实现,方法如下:
@echo off
set /a a=1,b1=10
Setlocal EnableDelayedExpansion
echo:!b%a%! ...
pause call 在这里的用法实际是变量延迟的一种快捷方式,变量延迟一般用在for的循环体里面。
call,%%b%a%%% 这里的逗号实际是一个分隔符,和空格一样,还有很多分隔符可用,比如上例中的 echo:!b%a%! ,当然并不是所有的命令都可以这样用,看情况而定……
Quote: | C:\>echo+cn-dos.net
cn-dos.net
C:\>echo/cn-dos.net
cn-dos.net
C:\>echo[cn-dos.net
cn-dos.net
C:\>echo:cn-dos.net
cn-dos.net
C:\>echo;cn-dos.net
cn-dos.net |
|
|
|
2008-6-23 22:07 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
5 楼』:
我的理解是,如果变量之中仍有变量,就要用到变量延迟 call 延迟 或setlocal 开启延迟 不知这样理解对否。。。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-6-23 22:17 |
|
|
hongewuyan
初级用户
积分 65
发帖 29
注册 2008-3-24
状态 离线
|
『第
6 楼』:
谢谢大家的帮助,这次真的明白了。。。
|
|
2008-6-24 11:24 |
|
|
mysuntjy
新手上路
积分 13
发帖 10
注册 2008-11-13 来自 重庆市
状态 离线
|
『第
7 楼』:
Quote: | Originally posted by bat-zw at 2008-6-23 17:15:
@echo off
set a=1&set b1=10
call,echo %%b%a%%%
pause>nul |
|
为什么将连接两个set语句的&两边加个空格,即:set a=1 & set b1=10,运行结果为:ECHO 处于关闭状态.
????
|
|
2008-12-23 07:13 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by mysuntjy at 2008-12-23 07:13:
为什么将连接两个set语句的&两边加个空格,即:set a=1 & set b1=10,运行结果为:ECHO 处于关闭状态.
???? |
|
加了空格,变量a的值就是1加上一个空格了,而不是原来单独的一个1。
|
|
2008-12-23 09:48 |
|
|
95167958
新手上路
积分 1
发帖 1
注册 2008-12-22
状态 离线
|
『第
9 楼』:
call,echo %%b%a%%%语句中为什么不是call,echo %b%a%%,而要多出两个%呢,请指教
|
|
2008-12-23 12:23 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
|
2008-12-23 13:14 |
|
|
gool123456
初级用户
积分 89
发帖 76
注册 2009-12-13
状态 离线
|
|
2010-5-27 17:28 |
|