批量延迟扩展无法按预期工作

时间:2017-01-11 13:05:07

标签: batch-file

我在下面写了示例批处理脚本,变量COUNT正在更新,但不知何故MY_ROOT没有得到更新,我在这里遗漏了什么?

@echo off
setlocal ENABLEDELAYEDEXPANSION
set MY_ROOT= C:\
set COUNT=0

if 1 == 1 (  
  set MY_ROOT = D:\ 
  echo MY_ROOT = !MY_ROOT!

  set /A COUNT=10 
  echo Count = !COUNT!
)
:end

**o/p:**
MY_ROOT =  C:\
Count = 10

感谢。

2 个答案:

答案 0 :(得分:5)

空格在字符串set语句的两个方面都很重要。您正在分配一个名为“MY_ROOT Space

的变量

答案 1 :(得分:2)

最令人困惑的功能之一'在批处理文件中,空格成为变量名称的一部分。当您使用SET时,移动等号周围的空格。您也可以使用下面的代码中的引号来更安全地赋值。

@echo off
setlocal ENABLEDELAYEDEXPANSION
set "MY_ROOT=C:\"
set COUNT=0

if 1 == 1 (  
  set "MY_ROOT=D:\"
  echo MY_ROOT = !MY_ROOT!

  set /A COUNT=10 
  echo Count = !COUNT!
)
:end