问题描述:
启用变量延迟,用&将Set命令与echo命令合并为一行,出现意外结果。
初学,测试很久不得其解。
请各位前辈指点迷津,先行拜谢。
执行出错代码如下:- echo 测试1_结果错误:数值大于100。
- setlocal enabledelayedexpansion
- set s=100 & echo !s!
-
- if !s! EQU 100 (echo 数值等于100)
- if !s! gtr 100 (echo 数值大于100) && echo !s!
- pause
复制代码 只要不启用变量延迟,或者启用时把Set命令与echo命令分行写,
执行就没有问题。如以下3个测试:
测试2:启用变量延迟,命令分行写:- echo 测试2_结果正确:数值等于100
- setlocal enabledelayedexpansion
- set s=100
- echo !s!
-
- if !s! EQU 100 (echo 数值等于100)
- if !s! gtr 100 (echo 数值大于100)
- pause
复制代码 测试3:不启用变量延迟,命令合并写:- echo 测试3_正确:数值等于100
- set s=100 & echo %s%
-
- if %s% EQU 100 (echo 数值等于100)
- if %s% gtr 100 (echo 数值大于100)
- pause
复制代码 测试4:不启用变量延迟,命令分行写:- echo 测试4_正确:数值等于100
- set s=100
- echo %s%
-
- if %s% EQU 100 (echo 数值等于100)
- if %s% gtr 100 (echo 数值大于100)
- pause
复制代码
|