中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于判断一个磁盘分区是否存在的cmd
作者:
标题: 关于判断一个磁盘分区是否存在的cmd 上一主题 | 下一主题
wjgyz740526
中级用户




积分 203
发帖 44
注册 2003-8-14
状态 离线
『楼 主』:  关于判断一个磁盘分区是否存在的cmd

我想写一个判断特定磁盘分区(比如z盘)是否存在的cmd,有的话就执行特定命令,否则显示一个错误提示。cmd如下:

@echo off
z:
IF Errorlevel 0 GOTO right
echo 你没有z盘
:right
echo 你有z盘
pause

哪儿错了呢?

恳请赐教

2006-9-10 01:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  因为CMD是从上至下顺序执行的——如果中途没有goto之类的跳转语句的话,所以,当执行到echo 你没有Z盘 这一句的时候,因为没有跳转语句,所以程序会继续往下走,执行:right的内容。

  解决办法是:在:right之上加一句pause && goto :eof。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-10 02:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjgyz740526
中级用户




积分 203
发帖 44
注册 2003-8-14
状态 离线
『第 3 楼』:  

我想问一下,如果在cmd中进入一个不存在的盘符系统的错误码是0还是1?
我修改了一下。cmd如下:

@echo off
z:
IF Errorlevel 0 GOTO error
echo 你没有z盘
goto exit
:error
echo 你有z盘
:exit
pause

这样还是不行?为什么?

2006-9-10 04:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  错误码这个东西比较复杂,现在的用户可能都已经淡忘了。很不幸,对它我接触得不多,帮不上什么忙。建议你不用返回码来判断。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-10 06:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjgyz740526
中级用户




积分 203
发帖 44
注册 2003-8-14
状态 离线
『第 5 楼』:  

那么,不用错误码该怎么解决呢?

楼上的兄弟能给出个方法吗?

2006-9-10 06:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

返回码网上搜索也没有多少,这个自己试,可以用

if exist z:\nul 来判断

2006-9-10 06:56
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  在我的XP系统中,可以用这条语句来判断:if exist z: (echo 你有Z盘) else (echo 你没有Z盘),在纯DOS下应该没什么问题的。不知道你想用在什么环境中。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-10 06:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wjgyz740526
中级用户




积分 203
发帖 44
注册 2003-8-14
状态 离线
『第 8 楼』:  

受教了,没想到if exist 还能这样,我一直以为只能判断文件是否存在呢

2006-9-10 07:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 9 楼』:  

pushd C:>nul 2>nul && echo 有 ||echo 无




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-9-10 09:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 10 楼』:  

  呵呵,electronixtar的方法也不错,只是不知道在纯DOS下是否存在pushd命令。用该命令之后,最好不要忘记在适当的地方用popd来返回到当前的目录下。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-9-10 09:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: