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

[代码合集] [已解决]请教批处理变量嵌套为何不能显示?

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

因为你只对变量赋值,而没有调用变量
把 echo !vol!value! 改为 echo %vol!value!% 试一下
赞成“拿来主义”,但是鄙视“伸手党”

TOP

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

评分人数

TOP

我也试了不行。难到和!有关。可是没有检测到啊

TOP

回复 3# awk


    都不行哦,奇怪!

TOP

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

TOP

回复 6# CrLf


   测试3楼正确! 请问在dos下有什么什么软件让for /f 和for /v 命令正常运行的?

TOP

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

TOP

返回列表