中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 請指教那裡出了問題,急用謝謝
作者:
标题: 請指教那裡出了問題,急用謝謝 上一主题 | 下一主题
w909525
初级用户





积分 98
发帖 34
注册 2007-3-9
状态 离线
『楼 主』:  請指教那裡出了問題,急用謝謝

if exist d:\1.bat goto d else goto end
:d
d:
:end
exit
我的本意是如果D盤存在1.bat就進入D盤,如果不存在就退出。但是我執行的結果卻是無論有沒有1.bat都是直接退出,請問高手這個批出理錯在哪裡,如果想實現我上述的結果應該怎樣改,謝謝

2007-4-8 01:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 2 楼』:  

批处理是顺序执行的

所以 在执行完存在的情况下 仍然执行了 exit语句
if exist d:\1.bat goto d else goto end
:d
d:
echo file exist & pause >nul

:end
exit
对比一下  实际上它正确执行了  只是你不知道而已
if exist d:\1.bat (goto d) else (goto end)
:d
d:
echo file exist & pause >nul
:end
echo file not exist & pause >nul
exit
[ Last edited by kcdsw on 2007-4-8 at 02:33 AM ]

2007-4-8 02:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『第 3 楼』:  

楼上的 文件存不存在都会显示存在,不对吧?

应该这样改就符合楼主的意思了:
@echo off
if exist d:\1.bat goto d else goto end
:end
@echo file not exist & pause >nul
exit
:d
d:
echo  file exist
cmd

[ Last edited by zzhh612 on 2007-4-8 at 02:47 AM ]

2007-4-8 02:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 4 楼』:  


if exist "d:\1.bat" (goto d) else goto end
:d
d:
pause
exit
:end
pause
exit
还有一个是括号问题,在if /?里面可以看到原因:ELSE 命令必须与 IF 命令的尾端在同一行上

2007-4-8 02:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 5 楼』:  


if exist "d:\1.bat" (goto d
) else (goto end
)
:: IF 与 ELSE 不能在同一行中出现


2007-4-8 03:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by zhoushijay at 2007-4-7 14:32:
if exist "d:\1.bat" (goto d
) else (goto end
)
:: IF 与 ELSE 不能在同一行中出现

谁说IF 与 ELSE 不能在同一行中出现?
只不过 ELSE 前面的命令要(...)起来
@echo off
:loop
cls
set a=
set /p a=
if "%a%" == "1" (echo Yes) else echo No
pause
goto loop
按LZ的要求改一下,没有 d:\1.bat 直接跳到:end
if not exist d:\1.bat goto end
d:
exit
:end
exit
[ Last edited by zh159 on 2007-4-7 at 05:11 PM ]

2007-4-8 06:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 7 楼』:  

if exist d:\1.bat goto d else goto end
:d
exporer d:
:end
exit



知,不觉多。不知,乃求知
2007-4-8 06:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: