Board logo

标题: [其他] [已解决]批处理不用CALL能不能实现变量嵌套? [打印本页]

作者: zljzsmzzx    时间: 2009-6-27 00:11     标题: [已解决]批处理不用CALL能不能实现变量嵌套?

请看下面这个代码。
  1. @echo off
  2. :a
  3. set a=abcdefghijklmnopqrstuvwxyz
  4. set/a b=%random%%%26
  5. call echo %%a:~%b%,1%%
  6. pause>nul&goto a
复制代码
该批处理是随机显示变量a中的一个字符。代码中用了CALL的变量嵌套。我现在想问的是,如果“call echo %%a:~%b%,1%%”这一句不准用CALL而只能直接用ECHO能不能达到同样的效果?请高人指点。

[ 本帖最后由 zljzsmzzx 于 2009-6-27 00:55 编辑 ]
作者: 随风    时间: 2009-6-27 00:13

除了开启变量延迟,似乎没有其它办法。
作者: defanive    时间: 2009-6-27 00:13

论坛搜索“变量延迟”
(发现Batcher这招很好用)
作者: zljzsmzzx    时间: 2009-6-27 00:36     标题: 回复 2楼 的帖子

谢谢随风大哥。明白了。
  1. @echo off&setlocal enabledelayedexpansion
  2. :a
  3. set a=abcdefghijklmnopqrstuvwxyz
  4. set/a b=%random%%%26
  5. echo !a:~%b%,1!
  6. pause>nul&goto a
复制代码
另外还有一个问题,这两种用法哪种更有效率呢?
作者: Batcher    时间: 2009-6-27 00:43     标题: 回复 4楼 的帖子

论坛有不少关于效率的讨论帖。
通常情况下,能不用call就不用吧。
作者: 随风    时间: 2009-6-27 00:44

当然是开启变量延迟,call 会影响效率,
参考 http://bbs.bathome.net/thread-4831-1-1.html
作者: zljzsmzzx    时间: 2009-6-27 00:55

再次感谢。对“变量嵌套”用法又进了一步。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2