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

[其他] [已解决]这两段赋值的批处理代码如何解释?

1.
  1. @echo off
  2. set mm=boy
  3. set mm=girl&echo %mm%
  4. pause
复制代码
2.
  1. @echo off
  2. set mm=boy
  3. set mm=girl
  4. echo %mm%
  5. pause
复制代码
为什么第一个代码显示的是boy,而第二个代码显示的是girl?为什么第一个代码没有感知到mm=girl,批处理是按行读取的,那么第一个代码中的set mm=girl&echo %mm%
批处理读取这一行的时候,没有读出 mm=girl 吗?往高手解答一下!谢谢

[ 本帖最后由 bat_521 于 2010-9-12 11:12 编辑 ]

代码1改成:
  1. @echo off&setlocal EnableDelayedexpansion
  2. set mm=boy
  3. set mm=girl&echo !mm!
  4. pause
复制代码

TOP

看了随风老大的教程终于明白了

看了随风老大延迟变量的教程以后,我明白了以上俩段代码.在复合语句中,如果不开启延迟变量扩展,批处理在给复合语句中的变量赋值时,会赋符合语句之前的值给变量.其中代码1中的set mm=girl&echo %mm%属于复合语句,所以在给变量mm赋值的时候,其实是赋了mm=boy 这个值,所以后面echo显示的是boy

TOP

返回列表