中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-01 15:37
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [提问]如何删除除指定目录以外的所有目录? 查看 4,809 回复 24
16 发表于 2006-09-30 03:57 ·  中国 江苏 苏州 电信
中级用户
★★
过度热情
积分 321
发帖 139
注册 2006-03-21 17:19
20年会员
UID 52521
性别 男
状态 离线
批处理的if语句 的“or” 操作是您上面的代码。空格 连接几个if 语句。。。如下 如果是”and“操作的if语句用什么连接呢?

if not "%%i"=="1" if not "%%i"=="2" if not "%%i"=="3" call
知识在于不断积累
17 发表于 2006-09-30 06:37 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  if not "%%i"=="1" if not "%%i"=="2" if not "%%i"=="3" 的意思是 如果 %%i 不等于1,也不等于2,同时也不等于3,那么就……,其实几个 if 条件并列就表示 "and" 操作。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
18 发表于 2006-09-30 07:04 ·  中国 江苏 苏州 电信
中级用户
★★
过度热情
积分 321
发帖 139
注册 2006-03-21 17:19
20年会员
UID 52521
性别 男
状态 离线
赫赫。。发颠倒了。。。。。。“or” 操作是?
知识在于不断积累
19 发表于 2006-09-30 07:05 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
版主说的对, 三个if表示三个串联的条件判断, 如果三个条件都成立就执行命令. 只要一个判断不成立将不执行call命令.
20 发表于 2006-09-30 08:02 ·  中国 广东 肇庆 电信
初级用户
积分 44
发帖 16
注册 2006-09-23 22:11
19年会员
UID 63478
性别 男
来自 广东省
状态 离线
9层大哥说的没错啊。。保存一的时候2。3都没了,哪里还能找到2。3呢?
21 发表于 2006-09-30 11:35 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by piziliu2004 at 2006-9-30 07:04:
赫赫。。发颠倒了。。。。。。“or” 操作是?

  or 操作可以有两种格式:

  1、用 if 的嵌套格式:

if "%%i"=="1" (command1) else (if "%%i"=="2" (command1) else (if "%%i"=="3" command1))

  这种方法的流程是:如果 %%i 等于1,则执行command1,否则,再判断 %%i 是否等于2,等于2则执行command1,不等于2再判断是否等于3,如果等于3就执行command1……还可以用 else 继续接下去。

  2、用顺序排列的几个if语句:

if "%%i"=="1" command1
if "%%i"=="2" command1
if "%%i"=="3" command1
……

  这种方法的流程是:如果%%i 等于1,执行command1,否则,忽略command1操作;然后再执行下一句,判断%%i 是否等于2,如果等于2的话就执行command1,不等于2的话就忽略这个语句上的command1;然后再执行下一句……但是一个数不可能同时为两个或两个以上的值,所以如此排列的 if 条件只可能有一个成立,也就只会执行一次command1了。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
22 发表于 2006-09-30 13:11 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
3.if...else...if

if xxx == ??? ( command1
) else (
if xxx == ??? command2
command3
)
23 发表于 2006-10-07 00:59 ·  新加坡 Verizon通讯公司UUNet互联点
初级用户
积分 46
发帖 19
注册 2006-09-28 20:43
19年会员
UID 63949
状态 离线
在图形界面里用反选功能也可以实现,而且很简单啊.
24 发表于 2007-06-21 16:21 ·  中国 山西 太原 联通
初级用户
积分 36
发帖 14
注册 2006-09-06 20:48
19年会员
UID 61977
性别 男
状态 离线
这个帖子受益匪浅!
25 发表于 2008-02-15 12:42 ·  中国 辽宁 鞍山 联通
新手上路
积分 14
发帖 7
注册 2007-02-17 12:02
19年会员
UID 79696
性别 男
状态 离线
我觉得还是15楼的代码比较好。。。
论坛跳转: