批处理中的变量嵌套变量用法
请教一个问题,有一个功能一直不知道如何实现.举例如下:
先设置下面两个变量:
set a=1
set b1=10
然后执行 echo %b%a%% 得到 %b1%
其实我想得到的是 赋予b1的值,即 10
请问大家能否实现呢?[code]@echo off
set a=1&set b1=10
call,echo %%b%a%%%
pause>nul[/code]call 这里实际是对命令行进行重新组织扩展,先扩展%%b%a%%%里面的%a%,使%a%变成a的值1,再用cal来扩展%b1%。
也可以用变量延迟来实现,方法如下:[code]@echo off
set /a a=1,b1=10
Setlocal EnableDelayedExpansion
echo:!b%a%! ...
pause[/code]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[/quote]
原文地址:[url]http://www.cn-dos.net/forum/viewthread.php?tid=41143[/url] 回头看起更有一翻回味 ,这次好象看明白了 原来是这回事
起先不知道为甚摸 set 了 a b1 却后来是echo %%b%a%% 根本没有b1的影子 原来是把a先次替换成了1 变成了echo %b1% 学习了
变量嵌套变量,听起来好复杂哦 明白了啊~~~谢谢分享啊 !!!! 遇偶数直接脱%、遇奇数先替换再脱%。每个call脱一层。
[[i] 本帖最后由 taojunyi 于 2009-3-15 17:46 编辑 [/i]] 有点复杂,慢慢学吧! 学习了,现在迷上批处理了, 很不错的东西,学习了 有点难理解,要认真学习才行! 变量套变量,,我现在想有什么些用处,,好像,,,没想到 看了数次,终于有点明白了!!
谢谢LZ了! 好哇 从这里知道了怎样变量嵌套 原来call echo是这么用的,两个百分号的形式%%实际上是为了扩展一次之后能留下一个百分号%。
Batcher好像这地方写错了吧? ”再用cal来扩展%b1%。“,应该是再用echo吧。
扩展即替换的意思,只是外文那么叫,expand replace... 这个用法比较绕脑子
页:
[1]