楼 主
关于判断一个磁盘分区是否存在的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没商量。
考虑问题复杂化,解决问题简洁化。
论坛跳转: