Board logo

标题: 我己实现能查找硬盘最后的分区 [打印本页]

作者: mafa3     时间: 2003-9-15 00:00    标题: 我己实现能查找硬盘最后的分区

必须配合 STRINGS.COM
             XSET.EXE


http://www.ipdown.com/dosbbs/dispbbs.asp?boardID=11&ID=7049

第6楼


[此贴子已经被作者于2003-10-6 22:32:05编辑过]



作者: cn_archer     时间: 2003-9-16 00:00
怎么实现的,说说看吧

作者: mafa3     时间: 2003-9-16 00:00
问:如何得到光驱所在的盘符?

答:可以用本站“脚本工具”中的FINDCD程序来自动显示出光驱的盘符,例如FINCDCD命令就可以将当前光驱的盘符显示并放入环境变量%CDROM%中。另外,我编写了一个批处理文件,它会自动查找光驱所在的盘符,将结果显示出来并存入环境变量%CDROM%中。不过它需要两个批处理增强程序,Strings 2.5和XSET 5.47,均可在本站的“脚本工具”中下载。文件的内容如下:

@echo off
set dn=66
set cdrom=
:count
strings dn=add %dn%,1
strings dr=char %dn%
xset /search "CDROM" drv drivetest %dr%
if not %drv%#==# goto ok
if %dn%#==90# goto no
goto count
k
set cdrom=%dr%
echo The CD-ROM drive letter %cdrom% has been assigned to the variable "CDROM".
goto end
:no
echo No CD-ROM found!
:end
set dr=
set dn=
set drv=
echo.

此例中是判断光驱所在的盘符,若想判断其它存储设备(或内存盘等)所在的盘符,将上面文件中的"xset /search "CDROM" drv drivetest %dr%"行中的"CDROM"改为其它名称即可,例如对于内存盘即可用"RAM"来替换"CDROM"。

如果您有任何看法或建议的话,可以给我邮件或留言,谢谢!

一个非常强大的增强的SET命令,有几十种功能,除强大的字符操作,文件操作等功能以外,还能制作窗口,改变颜色,设置密码等.支持长文件名和Win3.x/9x/NT/2K/XP的DOS窗口.它的选项非常多,有全屏幕帮助(可直接用XSET命令进行,也可看它的帮助文件),比如XSET Dr DRIVETEST C就可以将驱动器C的详细状态,包括驱动器类型,比如是HARDDISK(即硬盘),FLOOPY(即软盘),CDROM(即光盘),RAM(即内存盘),SUBST(即虚拟盘),REMOTE(即远程驱动器)等等,以及它是否准备好,是否只读,是不是可移动磁盘等信息存入环境变量%DS%中.今年5月推出的最新版本.

作者: 电吉入侵     时间: 2003-10-7 00:00
用一个DREADY就可以了,因为DOS只能识别FAT系统,如果是光驱看它写不写得入就可以排除...
作者: Wengier     时间: 2003-10-7 00:00


  Quote:
以下是引用电吉入侵在2003-10-7 9:50:37的发言:
用一个DREADY就可以了,因为DOS只能识别FAT系统,如果是光驱看它写不写得入就可以排除...

这有什么用,如果是写保护的软驱或只读的网络驱动器怎么办?
作者: 绿叶林     时间: 2003-10-8 00:00
还有一个问题,DOS下认盘符好象是先认主分区再认扩展分区中的逻辑分区。

比如:有一个40G的硬盘,分区如下:(都是FAT32的)
   第1分区:10G 主分区(活动)
   第2分区:25G 扩展分区 (再分两个逻辑分区:10G、15G)
   第3分区:5G   主分区

在DOS下应该是这样认分区盘符的:
   第1分区:10G 主分区(活动)  ----> C:
   第2分区:25G 扩展分区 (再分两个逻辑分区:10G、15G) --->E:  F:   
   第3分区:5G   主分区      ----> D:

[B]所以:
   最后一个盘符 F ,并不是最后的分区。
  
   *实际上,最后一个分区的盘符应该是D[/B]

[此贴子已经被作者于2003-10-8 20:41:44编辑过]



作者: 绿叶林     时间: 2003-10-8 00:00
我个人认为:

  最好的方法应该从分区表入手!