中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-02 00:25
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于判断一个磁盘分区是否存在的cmd 查看 1,750 回复 9
楼 主 关于判断一个磁盘分区是否存在的cmd 发表于 2006-09-10 01:38 ·  中国 江苏 扬州 电信
中级用户
积分 203
发帖 44
注册 2003-08-14 00:00
22年会员
UID 8600
性别 男
状态 离线
我想写一个判断特定磁盘分区(比如z盘)是否存在的cmd,有的话就执行特定命令,否则显示一个错误提示。cmd如下:

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

哪儿错了呢?

恳请赐教
2 发表于 2006-09-10 02:13 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  因为CMD是从上至下顺序执行的——如果中途没有goto之类的跳转语句的话,所以,当执行到echo 你没有Z盘 这一句的时候,因为没有跳转语句,所以程序会继续往下走,执行:right的内容。

  解决办法是:在:right之上加一句pause && goto :eof。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
3 发表于 2006-09-10 04:48 ·  中国 江苏 扬州 电信
中级用户
积分 203
发帖 44
注册 2003-08-14 00:00
22年会员
UID 8600
性别 男
状态 离线
我想问一下,如果在cmd中进入一个不存在的盘符系统的错误码是0还是1?
我修改了一下。cmd如下:

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

这样还是不行?为什么?
4 发表于 2006-09-10 06:20 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  错误码这个东西比较复杂,现在的用户可能都已经淡忘了。很不幸,对它我接触得不多,帮不上什么忙。建议你不用返回码来判断。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
5 发表于 2006-09-10 06:51 ·  中国 江苏 扬州 电信
中级用户
积分 203
发帖 44
注册 2003-08-14 00:00
22年会员
UID 8600
性别 男
状态 离线
那么,不用错误码该怎么解决呢?

楼上的兄弟能给出个方法吗?
6 发表于 2006-09-10 06:56 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
返回码网上搜索也没有多少,这个自己试,可以用

if exist z:\nul 来判断
7 发表于 2006-09-10 06:58 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  在我的XP系统中,可以用这条语句来判断:if exist z: (echo 你有Z盘) else (echo 你没有Z盘),在纯DOS下应该没什么问题的。不知道你想用在什么环境中。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
8 发表于 2006-09-10 07:13 ·  中国 江苏 扬州 电信
中级用户
积分 203
发帖 44
注册 2003-08-14 00:00
22年会员
UID 8600
性别 男
状态 离线
受教了,没想到if exist 还能这样,我一直以为只能判断文件是否存在呢
9 发表于 2006-09-10 09:17 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
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'>"
10 发表于 2006-09-10 09:35 ·  中国 广东 佛山 广东睿江科技有限公司
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  呵呵,electronixtar的方法也不错,只是不知道在纯DOS下是否存在pushd命令。用该命令之后,最好不要忘记在适当的地方用popd来返回到当前的目录下。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: