找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28146|回复: 7

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

[复制链接]
发表于 2011-10-9 19:37:11 | 显示全部楼层 |阅读模式
本帖最后由 a262615704 于 2011-10-9 21:53 编辑
  1. set value=50
  2. set vol!value!=500
  3. echo !vol!value!
复制代码
为什么不能显示500?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-10-9 19:45:23 | 显示全部楼层
因为你只对变量赋值,而没有调用变量
把 echo !vol!value! 改为 echo %vol!value!% 试一下
发表于 2011-10-9 20:08:24 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set value=50
  4. set vol%value%=500
  5. echo !vol%value%!
  6. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
a262615704 + 1 非常感谢

查看全部评分

发表于 2011-10-9 20:16:58 | 显示全部楼层
我也试了不行。难到和!有关。可是没有检测到啊
 楼主| 发表于 2011-10-9 20:28:17 | 显示全部楼层
回复 3# awk


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


   测试3楼正确! 请问在dos下有什么什么软件让for /f 和for /v 命令正常运行的?
发表于 2011-10-9 22:01:27 | 显示全部楼层
dos 下没有那些拓展功能…
楼主的代码如果是在 dos 下运行,可以用 call echo %%vol%value%%% 实现变量嵌套
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:08 , Processed in 0.020413 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表