中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-07 21:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用IF EXIST多条件判断 查看 3,844 回复 16
楼 主 用IF EXIST多条件判断 发表于 2008-03-15 13:00 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
IF EXIST 后面要判断2个条件因该怎么用啊
比如
IF EXIST "C:\DOCUME~1\admin\桌面\这里我要判断2个条件,不知道要怎么判断
2 发表于 2008-03-15 13:13 ·  中国 福建 泉州 电信
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
用两个IF EXIST了
IF EXIST "XXXXX" IF EXIST "XXXXX1"
QQ:366840202
http://chenall.net
3 发表于 2008-03-15 18:07 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
不知道你要判断两个什么条件,是如发现A怎么怎么样,如发现B怎么怎么样, 如两个都发现怎么怎么样,如两个都没发现又怎么怎么样吗?如是这样,可以借用以下语句:
if exist a (
if exist b (
echo a and b is find
) else (
echo a is find b is not find
)
) else (
echo a is not find
)
也不知道是你想要的不(就是不能判别A不在B在的情况),本人English不怎么样,可别见笑哦,如还不明白看看这里吧http://www.cn-dos.net/forum/viewthread.php?tid=38480&fpage=2,希望能帮到你了。

[ Last edited by zw19750516 on 2008-3-15 at 06:43 PM ]
4 发表于 2008-03-15 18:58 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
谢谢大家的回复,我的意思就是2楼所说的一样
,两个都发现执行一个结果,我就是想问下
用一条IF EXIST 语句能不能实现
如果需要2条的话帮忙举个例子 谢谢
5 发表于 2008-03-15 19:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
  一个EXIST肯定是不行的,不知道你坚持用一个EXIST有何含义,再说了你要一句实现,我上面的就是一句啊,可以改写下:
if exist a ( if exist b ( echo a and b is find ) else ( goto :eof ) ) else ( goto :eof )
只有发现A和B都在时,执行一个命令:echo a and b is find,否则就结束命令。

[ Last edited by zw19750516 on 2008-3-15 at 07:25 PM ]
6 发表于 2008-03-16 01:02 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
饭要一口一口吃,路要一步一步走

set xxx=没有
if exist a set xxx=有
if exist b set xxx=有
最原始的代码最可靠
第一高手 第二高手

7 发表于 2008-03-17 01:21 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
谢谢fastslz的指导
我这人比较笨不知道我这样理解你给出的命令是不是正确的
你是用SET定义好变量 然后再用 IF EXIST 直接判断是吗
因为对SET命令一直用不好,还有很多地方不明白,还请帮忙举个里子好吗,这样我就更好理解点
比如:我有5台电脑,一些电脑桌面上有QQ.LNK ;一些有QQ腾迅.LNK,还有些没有
我想让他门自己判断,然后只要有QQ的就不复制过去,没有的就复制过去
我是这样写的:@echo off
if exist c:\admin\桌面\QQ.LNK goto a
if exist c:\admin\桌面\QQ腾迅.LNK goto a
xcopy d:\qq\qq.lnk c:\admin\桌面\
:a
end

还请您帮忙用你给的方法写下

[ Last edited by jy02141405 on 2008-3-17 at 10:53 AM ]
8 发表于 2008-03-17 09:22 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
完全用通配符
if not exist "%USERPROFILE%\桌面\*QQ*.lnk" xcopy /y "d:\qq\qq.lnk" "%USERPROFILE%\桌面\"

另一种方法
dir "%USERPROFILE%\桌面\*QQ*.lnk" >nul 2>nul||xcopy /y "d:\qq\qq.lnk" "%USERPROFILE%\桌面\"
第一高手 第二高手

9 发表于 2008-03-17 10:52 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
谢谢fastslz的再次恢复,但是用你刚才说的方法在一种情况下会桌面上会出现2个QQ

比如一台机子桌面上是QQ腾迅.lnk,你的命令就会复制一个QQ.lnk过去。
我现在就是想知道下你用SET命令怎么完成这个
10 发表于 2008-03-17 11:13 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
"%USERPROFILE%\桌面" 当前使用者桌面
"%ALLUSERSPROFILE%\桌面" 全部使用者桌面
所以会出现2个快捷方式
如果你全部用这个代码复制的.lnk,以后就不会出现2个的快捷方式。(说白了这是标准方法)
第一高手 第二高手

11 发表于 2008-03-17 12:52 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
谢谢 fastslz
现在搞明白了,
你能不能再帮忙用SET举个简单的例子啊
12 发表于 2008-03-17 13:31 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
@echo off
set xxx=没有
if exist a set xxx=有
if exist b set xxx=有
if "%xxx%"=="没有" (echo 没有) else echo 有
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
jy02141405 +1 2008-03-17 22:46
第一高手 第二高手

13 发表于 2008-03-17 22:47 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
fastslz谢谢你的例子,终于搞明白了```
真的非常感谢
14 发表于 2008-03-17 23:23 ·  中国 江西 吉安 电信
初级用户
积分 97
发帖 34
注册 2007-11-16 16:04
18年会员
UID 102852
性别 男
状态 离线
。。。。。麻烦你再帮我看下我的代码哪错了
@echo off
set e=没有
if exist c:\docume~1\admin\桌面\qq.lnk set e=有
if exist c:\docume~1\admin\桌面\qq腾迅.lnk set e=有
if "%e%"=="没有"(xcopy E:\tools\dzh\internet\qq.lnk c:\docume~1\admin\桌面\) else end
15 发表于 2008-03-18 13:10 ·  中国 北京 华为云
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
@echo off
set e=没有
if exist "c:\docume~1\admin\桌面\qq.lnk" set e=有
if exist "c:\docume~1\admin\桌面\qq腾迅.lnk" set e=有
if "%e%"=="没有"(xcopy "E:\tools\dzh\internet\qq.lnk" "c:\docume~1\admin\桌面\") else exit
论坛跳转: