Board logo

标题: [代码合集] [已解决]请教批处理变量嵌套为何不能显示? [打印本页]

作者: a262615704    时间: 2011-10-9 19:37     标题: [已解决]请教批处理变量嵌套为何不能显示?

本帖最后由 a262615704 于 2011-10-9 21:53 编辑
  1. set value=50
  2. set vol!value!=500
  3. echo !vol!value!
复制代码
为什么不能显示500?
作者: bingxing8000    时间: 2011-10-9 19:45

因为你只对变量赋值,而没有调用变量
把 echo !vol!value! 改为 echo %vol!value!% 试一下
作者: awk    时间: 2011-10-9 20:08

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set value=50
  4. set vol%value%=500
  5. echo !vol%value%!
  6. pause
复制代码

作者: zaixinxiangnian    时间: 2011-10-9 20:16

我也试了不行。难到和!有关。可是没有检测到啊
作者: a262615704    时间: 2011-10-9 20:28

回复 3# awk


    都不行哦,奇怪!
作者: CrLf    时间: 2011-10-9 20:52

不可能,3 楼代码是正确的,除非你还有关键的背景条件没说,比如代码是否位于语块中…
一般来说,一句语句中同级的变量只会被解释一次,%str% 最早被解释(语块预处理阶段),之后才在语块内部的每条语句执行前解释 !var!。所以不应该用 !str!var!! 或者 %str!var!%,而应该用 !str%var%!,写前要想下 cmd 会怎么理解这段代码,否则很难保证成功率。
作者: a262615704    时间: 2011-10-9 21:06

回复 6# CrLf


   测试3楼正确! 请问在dos下有什么什么软件让for /f 和for /v 命令正常运行的?
作者: CrLf    时间: 2011-10-9 22:01

dos 下没有那些拓展功能…
楼主的代码如果是在 dos 下运行,可以用 call echo %%vol%value%%% 实现变量嵌套




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