中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-02 00:01
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]关于if exist的问题! 查看 1,149 回复 5
楼 主 [求助]关于if exist的问题! 发表于 2007-03-12 12:36 ·  中国 河南 郑州 联通
新手上路
积分 16
发帖 7
注册 2007-03-12 09:18
19年会员
UID 81488
性别 男
状态 离线
我的系统是XPSP2,在批处理中使用if exist这个命令的时候,如果文件不存在会不停弹出提示窗口“Windows 找不到指定文件……”,关都来不及!

命令内容:

if exist x:\xxx\xxx.exe start x:\xxx\xxx.exe

初学批处理,请高手指点!

PS:下面是我在本站某教材中看到的资料。

批处理示例

1. IF-EXIST

1) 首先用记事本在C:\建立一个test1.bat批处理文件,文件内容如下:
@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist

然后运行它:
C:\>TEST1.BAT

如果C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。

2) 接着再建立一个test2.bat文件,内容如下:
@ECHO OFF
IF EXIST \%1 TYPE \%1
IF NOT EXIST \%1 ECHO \%1 does not exist

执行:
C:\>TEST2 AUTOEXEC.BAT
该命令运行结果同上。

说明:
(1) IF EXIST 是用来测试文件是否存在的,格式为
IF EXIST 命令
(2) test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。


[ Last edited by Chief on 2007-3-12 at 12:12 AM ]
2 发表于 2007-03-13 00:23 ·  中国 贵州 贵阳 电信
初级用户
积分 36
发帖 16
注册 2007-01-02 12:15
19年会员
UID 75265
性别 男
状态 离线
在if前面加一个@看看
3 发表于 2007-03-13 01:17 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
改成:
if exist “x:\xxx\xxx.exe” start “x:\xxx\xxx.exe”试试。
4 发表于 2007-03-13 01:28 ·  中国 江苏 连云港 电信
高级用户
★★★
前进者
积分 641
发帖 303
注册 2007-01-10 02:57
19年会员
UID 76009
性别 男
状态 离线
楼主的朋友这种用法肯定不对吧,start后面不能这样用,带双引号解释器会理解成是title
我相信总有一天,总会遇到一个人可以相濡以沫、相吻以湿!
5 发表于 2007-03-13 01:44 ·  中国 黑龙江 大庆 联通
新手上路
积分 16
发帖 6
注册 2007-01-17 09:15
19年会员
UID 76787
性别 男
状态 离线
我运行了下 好使 估计是你的机器毛病 呵呵
6 发表于 2007-03-13 04:54 ·  中国 河南 郑州 联通
新手上路
积分 16
发帖 7
注册 2007-03-12 09:18
19年会员
UID 81488
性别 男
状态 离线
问题已解决,发现不是这一句的错误,而是上一句。

start aaa.exe
if exist x:\xxx\xxx.exe start x:\xxx\xxx.exe

但奇怪的是系统提示的是找不到xxx.exe,而不是aaa.exe。并且单独运行上一句没有问题(aaa.exe也是不存在的文件)。
论坛跳转: