标题: [数值计算] [已解决]如何理解批处理中call解套嵌套变量? [打印本页]
作者: cryfordog 时间: 2009-11-1 23:59 标题: [已解决]如何理解批处理中call解套嵌套变量?
批处理:
@echo off
set n=1
set 1a=2
call echo %%%n%a%%
pause
解套错误
@echo off
set n=1
set a1=2
call echo %%a%n%%%
pause
解套正确
cmd:
set n=1
set 1a=2
call echo %%n%a%
解套正确
set n=1
set a1=2
call echo %a%n%%
解套正确
不太明白,用call 解套,有什么规律或者格式么
[ 本帖最后由 cryfordog 于 2009-11-3 22:14 编辑 ]
作者: cryfordog 时间: 2009-11-2 22:19
变量n=1:
代码1 1a %%n%a% 解套错误
代码2 a1 %a%n%% 解套正确
????
作者: vsbat 时间: 2009-11-3 12:52
不知楼主是否学过 C++ ,C++里在讲变量时是这么说的--变量名可以是:字母,数字,下划线的组合
且 一定要以字母或下划线开头---
也就是说 不能以数字开头---
那么bat里是否是这样呢???
见如下测试代码:- @echo off
- set a1=2
- set 1a=1
- set 227=3
- set _2a=4
- set _4=5
- set 5_e=6
- set a中$$国=555
- set a%8=666
- echo %a1%
- echo %1a%
- echo %227%
- echo %_2a%
- echo %_4%
- echo %5_e%
- echo %a中$$国%
- echo %a%8%
- pause>nul
复制代码
测试便知----bat里对变量名同样有类似要求:
不能以数字开头,可以有汉字或特殊字符eg. / \ . $,但不可以有如 & % 之类的在bat里有特殊意义的字符。
所以 本身 1a 就是不合法的-----当然出错
[ 本帖最后由 vsbat 于 2009-11-4 13:05 编辑 ]
作者: cryfordog 时间: 2009-11-3 22:10
哦,明白了,倒是没注意这点,谢谢了
作者: vsbat 时间: 2009-11-6 20:18
3楼 解答 不完整----
另见 贴
http://bbs.bathome.net/thread-6272-1-1.html
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |