中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 05:47
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何使用判断语句,求大家帮帮忙 查看 929 回复 7
楼 主 如何使用判断语句,求大家帮帮忙 发表于 2007-04-20 02:26 ·  中国 广西 柳州 电信
初级用户
积分 25
发帖 14
注册 2006-10-28 06:32
19年会员
UID 68613
性别 男
状态 离线
@echo off
if exist f:\555\0420.inf goto NO

我们知道 批处理中
if exist 是判断文件
f:\555\0420.inf 是F盘555文件夹里有没有0420.INF这个文档
goto NO 有就把批处理退出 没有就执行

比如:
@echo off
if exist f:\555\0420.inf goto NO
start/w Q:\0402\d.exe
start/w Q:\0402\e.exe
start/w Q:\0402\f.exe
@copy Q:\0402\0420.inf f:\555\

那么请问 怎么修改才可以 这样判断 :
我要求先判断F盘555文件夹里有没有0420.INF这个文档,没有的话就运行下面的程序Q:\0402\d.exe运行完以后,在判断有没有2.inf,没有的话就执行Q:\0402\e.exe,如果已经有了2.inf这个文档,那么就执行Q:\0402\f.exe这个程序,以此类推,直到所有的文件都已经执行完,然后退出.
我这样的想法主要是想当我批处理执行多个EXE的时候,突然重起,那么启动完后还可以接着运行前面没有运行过的文件或者操作,因为每运行一次就生成一个判断文件,如果运行时发现已经了那个判断文件,就跳过,然后执行下一个....哎 显得好罗嗦,都不知道你们看得懂吗, 总的一句话就是:
开机就判断 F盘555文件夹里有没有0420.INF这个文档,有就不执行,直接退出,如果没有 那么就运行Q:\0402\d.exe 运行完以后在判断有没有001.INF这个文档没有运行Q:\0402\e.exe,有的话就判断有没有002.inf这个文档,没有就运行Q:\0402\f.exe,有的话就判断有没有003.inf这个文档,没有就运行Q:\0402\g.exe
就这样........直到全部判断完了就退出.
哎 ~ 怎么看 还是那么罗嗦..................
2 发表于 2007-04-20 02:41 ·  中国 黑龙江 哈尔滨 电信
高级用户
★★★
积分 760
发帖 357
注册 2005-10-10 22:33
20年会员
UID 43332
状态 离线
3 发表于 2007-04-20 02:51 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
描述不清。
“在判断有没有2.inf,没有的话就执行Q:\0402\e.exe,如果已经有了2.inf这个文档,那么就执行Q:\0402\f.exe这个程序,”

“如果没有 那么就运行Q:\0402\d.exe 运行完以后在判断有没有001.INF这个文档没有运行Q:\0402\e.exe,有的话就判断有没有002.inf这个文档,没有就运行Q:\0402\f.exe,有”

是矛盾的。
不知想干嘛,如何判断。
Windows 一键还原
http://www.yjhy.com
4 发表于 2007-04-20 03:04 ·  中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
不知这样行否?
---------------
if not exist f:\555\0420.inf ( start/w Q:\0402\d.exe ) else goto NO
if not exist f:\555\001.inf start/w Q:\0402\e.exe && copy Q:\0402\001.inf f:\555\
if not exist f:\555\002.inf start/w Q:\0402\f.exe && copy Q:\0402\002.inf f:\555\
if not exist f:\555\003.inf start/w Q:\0402\g.exe && copy Q:\0402\003.inf f:\555\
copy Q:\0402\0420.inf f:\555\

:no
Windows 一键还原
http://www.yjhy.com
5 发表于 2007-04-20 04:31 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
20年会员
UID 46459
状态 离线
请问楼主,你到底有多少个*.exe?
欢迎你到批处理爱好者联盟QQ群:18023953
6 发表于 2007-04-20 07:12 ·  中国 广西 柳州 电信
初级用户
积分 25
发帖 14
注册 2006-10-28 06:32
19年会员
UID 68613
性别 男
状态 离线
Originally posted by lianjiang2004 at 2007-4-20 02:51 AM:
描述不清。
“在判断有没有2.inf,没有的话就执行Q:\0402\e.exe,如果已经有了2.inf这个文档,那么就执行Q:\0402\f.exe这个程序,”

“如果没有 那么就运行Q ...



成了,又学会了一招,呵呵 我这个主要是用于自己批处理那些机子更新游戏以后 ,不用在重复更新:D 谢谢 lianjiang2004在位朋友。
7 发表于 2007-04-20 07:13 ·  中国 广西 柳州 电信
初级用户
积分 25
发帖 14
注册 2006-10-28 06:32
19年会员
UID 68613
性别 男
状态 离线
请问楼主,你到底有多少个*.exe?


不限制,只是要个语法

[ Last edited by 78586862 on 2007-4-20 at 07:14 AM ]
8 发表于 2007-04-20 22:56 ·  中国 江苏 苏州 联通
中级用户
★★
我是DOS学者
积分 367
发帖 180
注册 2006-05-14 10:53
20年会员
UID 55507
性别 男
来自 重庆
状态 离线
Originally posted by lianjiang2004 at 03:04:
不知这样行否?
---------------
if not exist f:\555\0420.inf ( start/w Q:\0402\d.exe ) else goto NO
if not exist f:\555\001.inf start/w Q:\0402\e.exe &&am ...


補充一下;) 4樓的else用法是錯的..

ELSE 子句必須出現在 IF 之後的同一行。
例如:

IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)

以下命令無法作用,因為 del 命令必須以換行字元來
結尾:

IF EXIST filename. del filename. ELSE echo filename. missing

下面命令也無法作用,因為 ELSE 命令必須在與 IF 命令同一行
的結尾:

IF EXIST filename. del filename.
ELSE echo filename. missing

下面命令只有在寫成一行時才能作用:

IF EXIST filename. (del filename.) ELSE echo filename. missing
论坛跳转: