Board logo

标题: [文本处理] 批处理为什么无法改变变量的值? [打印本页]

作者: 东北胖子    时间: 2015-10-12 21:49     标题: 批处理为什么无法改变变量的值?

  1. @echo off
  2. set a1=0
  3. if "%a1%" equ  "0" (
  4. set a1=1
  5. )
  6. echo %a1%
复制代码


为什么执行后 a1 的值还是0呢。正常应该为1 呀
作者: 尘丶    时间: 2015-10-12 21:58

  1. @echo off
  2. set a1=0
  3. if "%a1%" equ  "0" set a1=1
  4. echo %a1%
复制代码
或者
  1. @echo off&setlocal enabledelayedexpansion
  2. set a1=0
  3. if "%a1%" equ  "0" (
  4. set a1=1
  5. )
  6. echo !a1!
复制代码
因为他在括号里面,算是复合句。复合句里面设置变量要用变量扩展
作者: /zhqsystem/zhq    时间: 2015-10-12 22:29

我这里运行正常与延迟变量没关系
作者: terse    时间: 2015-10-12 22:29

不是吧 应该是1
作者: 东北胖子    时间: 2015-10-12 22:35

或者因为他在括号里面,算是复合句。复合句里面设置变量要用变量扩展
尘丶 发表于 2015-10-12 21:58



    收到,非常感谢。困扰了我好一阵。
作者: 东北胖子    时间: 2015-10-12 22:36

不是吧 应该是1
terse 发表于 2015-10-12 22:29



    运行一下就知道了
作者: terse    时间: 2015-10-12 22:51

回复 6# 东北胖子

你改一下 试呢
  1. set ”a1=0“
  2. if %a1% equ  0
复制代码

作者: 东北胖子    时间: 2015-10-12 23:26

回复  东北胖子



你改一下 试呢
terse 发表于 2015-10-12 22:51


不知道为什么,我的之前的代码也正确了。我彻底晕了。




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