作者: lianjiang2004 时间: 2008-10-9 17:11 ==的前后,不要有空格。
应该是
set NN=
if "%NN%"=="" (echo 1) else echo 2
set NN=yes
if "%NN%"=="" (echo 1) else echo 2作者: radem 时间: 2008-10-9 17:23 后面加括号
set NN=
if %NN% == "" (echo 1) else (echo 2)
set NN=yes
if %NN% == "" (echo 1) else (echo 2)作者: shadanyige 时间: 2008-10-10 20:35 经过测试应该是这样
set NN=注(这里要有空格)
if "%NN%"==" "注这里引号里要有空格 (echo 1) else echo 2作者: buddiyar 时间: 2008-10-10 20:42 判断变量为空:
if not defined var echo it's empty!作者: radem 时间: 2008-10-11 02:37 晕!
set NN=
后面竟然有空格作者: pusofalse 时间: 2008-10-11 03:33 昨天在群里讨论过。命令提示符中与批处理中的差别。
命令提示符中依次键入:
set "test=a"
if "%test%" equ "a" echo yes
set "test="
if "%test%" equ "" echo yes
第二个不显示yes,说明条件不成立,是因为在命令提示符中,值为空的变量不会是一个变量,而是被当作成一个普通字符串处理。第二个if中的%test%就被当作了6个字符处理。这与直接在CMD中输入echo %abcdefg%(变量abcdefg事先没有定义)不会输出“echo处于打开状态”,而是输出“%abcdefg%”是一样的道理。这种现象只出现在变量值为空的情况下,即:在%%之间的字符串不会被认为是一个变量的标识,也无所谓变量扩展了。
[ Last edited by pusofalse on 2008-10-11 at 03:36 ]作者: zqz0012005 时间: 2008-10-11 05:09 居然说昨天才讨论过?我记得很久以前就讨论过
在bat中经常利用不存在的变量构造伪代码,达到迷惑人和免杀效果
bat中一个杀伤力比format还强的命令:%love%r%OOXX%%os:~3,1%%ml%作者: everest79 时间: 2008-10-11 05:39 cmd下怎么赋值一个变量为空?作者: cz1314 时间: 2009-5-4 19:55 cmd下 不行,必须编辑为bat文件运行才行。直接在cmd下 执行批处理命令(比如for )很多是无效的。作者: tongzj 时间: 2009-5-5 01:54 ::注意下面赋值,等号后面是有空格的
set a=
if not defined a (echo no defined) else (echo "%a%")