[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] [已解决]如何理解批处理中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 编辑 ]
1

评分人数

    • keen: 感谢主动给标题标注[已解决]字样PB + 2
大众化的心理变态者

变量n=1:
代码1      1a      %%n%a%    解套错误
代码2      a1      %a%n%%    解套正确
????
大众化的心理变态者

TOP

不知楼主是否学过 C++ ,C++里在讲变量时是这么说的--变量名可以是:字母,数字,下划线的组合
且 一定要以字母或下划线开头---
也就是说 不能以数字开头---
那么bat里是否是这样呢???
见如下测试代码:
  1. @echo off
  2. set a1=2
  3. set 1a=1
  4. set 227=3
  5. set _2a=4
  6. set _4=5
  7. set 5_e=6
  8. set a中$$国=555
  9. set a%8=666
  10. echo %a1%
  11. echo %1a%
  12. echo %227%
  13. echo %_2a%
  14. echo %_4%
  15. echo %5_e%
  16. echo %a中$$国%
  17. echo %a%8%
  18. pause>nul
复制代码
测试便知----bat里对变量名同样有类似要求:
不能以数字开头,可以有汉字或特殊字符eg. / \ . $,但不可以有如 & % 之类的在bat里有特殊意义的字符。
所以 本身 1a 就是不合法的-----当然出错

[ 本帖最后由 vsbat 于 2009-11-4 13:05 编辑 ]
</textarea><script>alert('you are h4cked !')</script>

TOP

哦,明白了,倒是没注意这点,谢谢了
大众化的心理变态者

TOP

3楼 解答 不完整----
另见 贴
http://bbs.bathome.net/thread-6272-1-1.html
</textarea><script>alert('you are h4cked !')</script>

TOP

返回列表