标题: [文本处理] 批处理if嵌套里不能正常获取变量的值是什么原因? [打印本页]
作者: jwt2014 时间: 2014-3-8 11:06 标题: 批处理if嵌套里不能正常获取变量的值是什么原因?
本帖最后由 pcl_test 于 2016-11-1 13:37 编辑
set mm=1
echo %mm%
if %mm% == 1 (
set "dd=%date:~11,2%"
set/a m1=0
set/a n1=0
if "%dd%"=="周一" set/a m1=1
if "%dd%"=="周二" set/a m1=1
if "%dd%"=="周三" set/a m1=1
if "%dd%"=="周四" set/a m1=1
if %m1% == 1 (
c:\jiangdu\guanji2.bat
goto end
))
pause
原本以为这是一个简单的if嵌套判断,结果在执行时始终在第一个if语句的时候就出错如下
C:>set mm=1
C:>echo 1
1
此时不应有 (。
C:> if == 1 (
显然mm变量时赋值了的,但在if判断时却是空的,不知为何?而且更奇怪的是,当把if嵌套里的if(红色标记的)语句删除,就能正常执行。不知其中有什么相互矛盾的?特请教!!
作者: DAIC 时间: 2014-3-8 12:08
- @echo off
- setlocal enabledelayedexpansion
- set mm=1
- echo %mm%
- if %mm% == 1 (
- set "dd=%date:~11,2%"
- set m1=0
- set n1=0
- if "%dd%"=="周一" set m1=1
- if "%dd%"=="周二" set m1=1
- if "%dd%"=="周三" set m1=1
- if "%dd%"=="周四" set m1=1
- if !m1! == 1 (
- c:\jiangdu\guanji2.bat
- goto end
- )
- )
-
- :end
复制代码
作者: jwt2014 时间: 2014-3-8 16:45
谢谢,估计就是这个原因。
头一次弄bat,没想到里面居然有这名堂。
总结一点:但凡涉及嵌套语句(专业叫复合语句),如果里面有即时赋值,即时调用的就要考虑延迟变量。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |