![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 09:59 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]为什么“if not exist……”语句不会跳转? |
| 可打印版本 2,218 / 14 |
| 第1楼 martin325 | 发表于 2006-04-30 12:57 |
| 银牌会员 发帖 603 积分 1,582 | |
|
[已结]为什么“if not exist……”语句不会跳转? 如题。举一个例子:
C盘中的menu.lst被删除,然后执行上面的批处理,结果还是不会跳转到step1去!!! 这是为什么? 请高手指点。 谢谢。 [ Last edited by HAT on 2008-11-13 at 17:36 ] |
|
| 第2楼 kcdsw | 发表于 2006-04-30 13:04 |
| 中级用户 发帖 179 积分 404 | |
|
我也遇到过这种情况 用if语句判断的时候总是会出问题
后来我在群内高手的指点下用dir+&做的跳转 |
|
| 第3楼 martin325 | 发表于 2006-04-30 13:18 |
| 银牌会员 发帖 603 积分 1,582 | |
|
我测试了一下,用 “if exist ……”语句是可以跳转的。
不知为什么? |
|
| 第4楼 martin325 | 发表于 2006-04-30 13:24 |
| 银牌会员 发帖 603 积分 1,582 | |
|
用dir+&怎么做的跳转?
怎么写的? 请举例,让我也学习学习。 |
|
| 第5楼 martin325 | 发表于 2006-04-30 13:41 |
| 银牌会员 发帖 603 积分 1,582 | |
|
已经解决了。“if not exist……”语句是可以跳转的。
出现1楼所描述的原因在于,本人把该段批处理的命名与要执行的程序名一样,结果在手工输入该批处理时,没有加上后缀“.bat”的缘故。 |
|
| 第6楼 kcdsw | 发表于 2006-04-30 15:28 |
| 中级用户 发帖 179 积分 404 | |
|
我上次是检测某个'参数'是文件还是目录时用了
结果他怎么都不跳转 后来用了 |
|
| 第7楼 martin325 | 发表于 2006-04-30 17:08 |
| 银牌会员 发帖 603 积分 1,582 | |
|
dir %a%\. >nul 2>nul & goto b 这句看不懂,能不能解释一下?
特别是“ >nul 2>nul &” |
|
| 第8楼 kcdsw | 发表于 2006-04-30 18:15 |
| 中级用户 发帖 179 积分 404 | |
|
呵呵 每个文件夹下都存在2个目录 1 是. 2是..
对不存在的目录使用dir的时候它会返回错误值 而我的目的是得知它存在不存在 所以不论正确与否 dir的执行结果我是不需要显示出来的 我只需要用& 来取它的结果 |
|
| 第9楼 3742668 | 发表于 2006-04-30 18:21 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
用dir C:\menu.lst >nul 2>nul && goto step1吧。
dir %a%\. >nul 2>nul & goto b这句的意思是: 查找名为%a%的目录,然后跳转到标号b处。这句执行完后不管是否存在目录%a%都会跳转到b处,所以应该和你的要求有所偏差。 >nul 2>nul表示dir命令产生的信息不在屏幕上显示,具体详细解释可翻一翻论坛老贴。 dir %a%\. 表示查找%a%目录下的.目录,在批处理中,.表示同级目录,".."表示上一级目录,所以dir %a%就是表示查找%a%目录。 补充: 1,此命令是根据dir是否正确执行来跳转,dir是可以直接用来查找目录的,所以可以直接写成dir %a% >nul 2>nul & goto b 2,考虑到命令行中可以能碰到路径包含空格的情况,一般在调用变量的时候两边加上""“号可以防止出错: dir "%a%" >nul 2>nul && goto Label |
|
| 第10楼 martin325 | 发表于 2006-04-30 21:52 |
| 银牌会员 发帖 603 积分 1,582 | |
|
dir C:\menu.lst >nul 2>nul && goto step1
这里有两个 && 分别表示什么意思? |
|
| 第11楼 220110 | 发表于 2006-05-01 23:05 |
| 荣誉版主 发帖 313 积分 718 | |
|
命令1 & 命令2 :单个&号表示,无论前面命令1执行成功与否,命令2照常执行.
命令1 && 命令2 :表示,只有命令1执行成功,并成功返回"0"的参数给命令2时,命令2才会继续. 命令1 | 命令2 与 命令1 || 命令2 的用法类似. |
|
| 第12楼 3742668 | 发表于 2006-05-02 01:06 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
command1 | command2
表示把command1的输出当作command2的参数。 command1 || command2 表示若command1执行不成功才执行command2,反之则不执行。 |
|
| 第13楼 gxp2005 | 发表于 2006-05-05 11:03 |
| 新手上路 发帖 1 积分 2 | |
|
好! 俺又学了一招呀
|
|
| 第14楼 fan927 | 发表于 2006-05-24 13:03 |
| 初级用户 发帖 31 积分 82 | |
|
其实一些"是否"判断用管道符号很方便,用if反而复杂化,一些个人观点.
dir C:\menu.lst &&grub.exe&root (hd0,0)&chainloader +1&boot||echo The "C:\menu.lst" is not exist!&echo The system is going to be shut. 不对的地方请高手指正 |
|
| 第15楼 nafan | 发表于 2008-11-13 17:10 |
| 初级用户 发帖 21 积分 22 | |
|
学了!
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |