Board logo

标题: 关于判断一个磁盘分区是否存在的cmd [打印本页]

作者: wjgyz740526     时间: 2006-9-10 01:38    标题: 关于判断一个磁盘分区是否存在的cmd

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

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

哪儿错了呢?

恳请赐教
作者: namejm     时间: 2006-9-10 02:13
  因为CMD是从上至下顺序执行的——如果中途没有goto之类的跳转语句的话,所以,当执行到echo 你没有Z盘 这一句的时候,因为没有跳转语句,所以程序会继续往下走,执行:right的内容。

  解决办法是:在:right之上加一句pause && goto :eof。
作者: wjgyz740526     时间: 2006-9-10 04:48
我想问一下,如果在cmd中进入一个不存在的盘符系统的错误码是0还是1?
我修改了一下。cmd如下:

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

这样还是不行?为什么?
作者: namejm     时间: 2006-9-10 06:20
  错误码这个东西比较复杂,现在的用户可能都已经淡忘了。很不幸,对它我接触得不多,帮不上什么忙。建议你不用返回码来判断。
作者: wjgyz740526     时间: 2006-9-10 06:51
那么,不用错误码该怎么解决呢?

楼上的兄弟能给出个方法吗?
作者: vkill     时间: 2006-9-10 06:56
返回码网上搜索也没有多少,这个自己试,可以用

if exist z:\nul 来判断
作者: namejm     时间: 2006-9-10 06:58
  在我的XP系统中,可以用这条语句来判断:if exist z: (echo 你有Z盘) else (echo 你没有Z盘),在纯DOS下应该没什么问题的。不知道你想用在什么环境中。
作者: wjgyz740526     时间: 2006-9-10 07:13
受教了,没想到if exist 还能这样,我一直以为只能判断文件是否存在呢
作者: electronixtar     时间: 2006-9-10 09:17
pushd C:>nul 2>nul && echo 有 ||echo 无
作者: namejm     时间: 2006-9-10 09:35
  呵呵,electronixtar的方法也不错,只是不知道在纯DOS下是否存在pushd命令。用该命令之后,最好不要忘记在适当的地方用popd来返回到当前的目录下。