|
junyee
中级用户
积分 253
发帖 112
注册 2006-5-31
状态 离线
|
『楼 主』:
[已结]如何判断一个变量非空?
如下
set NN=
if %NN% == "" (echo 1) else echo 2
set NN=yes
if %NN% == "" (echo 1) else echo 2
无论%NN%是否有值都会显2 !
我的主要目的是判断一个值是否为空
不知错哪了,高手见教一个???
[ Last edited by HAT on 2008-10-13 at 14:00 ]
|
|
2008-10-9 16:20 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
2 楼』:
检查一下第一个set nn=之后是不是有空格?、、、
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-10-9 16:23 |
|
|
tireless
银牌会员
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第
3 楼』:
set NN=
if "%NN%" == "" (echo 1) else echo 2
|
|
2008-10-9 16:23 |
|
|
junyee
中级用户
积分 253
发帖 112
注册 2006-5-31
状态 离线
|
『第
4 楼』:
谢谢3楼朋友。又发现个奇怪的事儿
在命令行里输入有不同的效果
附件
1: cmd.JPG (2008-10-9 16:35, 33.86 K)
|
|
2008-10-9 16:35 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
5 楼』:
==的前后,不要有空格。
应该是
set NN=
if "%NN%"=="" (echo 1) else echo 2
set NN=yes
if "%NN%"=="" (echo 1) else echo 2
|
Windows 一键还原
http://www.yjhy.com |
|
2008-10-9 17:11 |
|
|
radem
高级用户
CMD感染者
积分 691
发帖 383
注册 2008-5-23
状态 离线
|
『第
6 楼』:
后面加括号
set NN=
if %NN% == "" (echo 1) else (echo 2)
set NN=yes
if %NN% == "" (echo 1) else (echo 2)
|
|
|
2008-10-9 17:23 |
|
|
shadanyige
新手上路
积分 3
发帖 2
注册 2007-8-13
状态 离线
|
『第
7 楼』:
经过测试应该是这样
set NN=注(这里要有空格)
if "%NN%"==" "注这里引号里要有空格 (echo 1) else echo 2
|
|
2008-10-10 20:35 |
|
|
buddiyar
初级用户
积分 160
发帖 75
注册 2006-6-28
状态 离线
|
『第
8 楼』:
判断变量为空:
if not defined var echo it's empty!
|
|
2008-10-10 20:42 |
|
|
radem
高级用户
CMD感染者
积分 691
发帖 383
注册 2008-5-23
状态 离线
|
『第
9 楼』:
晕!
set NN=
后面竟然有空格
|
|
|
2008-10-11 02:37 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
10 楼』:
昨天在群里讨论过。命令提示符中与批处理中的差别。
命令提示符中依次键入:
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 ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-10-11 03:33 |
|
|
zqz0012005
中级用户
积分 297
发帖 135
注册 2006-10-21
状态 离线
|
|
2008-10-11 05:09 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
12 楼』:
cmd下怎么赋值一个变量为空?
|
49206C6F766520796F752067757973 54656C3A3133383238343036373837 |
|
2008-10-11 05:39 |
|
|
cz1314
初级用户
积分 64
发帖 43
注册 2007-11-12
状态 离线
|
『第
13 楼』:
cmd下 不行,必须编辑为bat文件运行才行。直接在cmd下 执行批处理命令(比如for )很多是无效的。
|
|
2009-5-4 19:55 |
|
|
tongzj
初级用户
积分 49
发帖 43
注册 2007-1-20
状态 离线
|
『第
14 楼』:
::注意下面赋值,等号后面是有空格的
set a=
if not defined a (echo no defined) else (echo "%a%")
执行上面命令得到显示为 " " ,表明赋值a为空,如果想真正赋值为空(nul),cmd变量本身是不允许为空的,空只代表未定义变量。
Quote: | Originally posted by everest79 at 2008-10-11 05:39:
cmd下怎么赋值一个变量为空? |
|
|
|
2009-5-5 01:54 |
|
|
ZJHJ
高级用户
积分 609
发帖 374
注册 2006-8-2
状态 离线
|
『第
15 楼』:
在批处理中,执行的变量不能不事先设置,负责将无法运行。
|
|
2009-5-6 04:53 |
|