Board logo

标题: [详解] 纯DOS下巧获硬盘的最后盘符 [打印本页]

作者: chishingchan     时间: 2009-10-12 15:45    标题: [详解] 纯DOS下巧获硬盘的最后盘符

本人健忘,所以有此发表,一来方便别人,二来自己作笔记。

所需工具:
http://upload.cn-dos.net/img/1715.rar

包含文件:
COUNT.COM
COUNT.TXT
HDRIVE.EXE
NSET.COM
NSET.TXT

特点:不生成(第三方)[垃圾] 文件

完整例子:
SET NUM=25
:CHECK
COUNT.COM NUM -
HDRIVE.EXE|NSET.COM LASTPART=$%NUM%
IF "%LASTPART%"=="" GOTO CHECK
HDRIVE.EXE 是获取可识别的硬盘盘符,当硬盘的分区格式为非FAT32时就不能识别了,例如,现有硬盘的分区如下:
C:FAT32
D:FAT32
E:NTFS
F:FAT32
运行:C:\>HDRIVE.EXE 回车 后 返回:
C:
D:
E:
原 E:不能被识别,所以由 F:顶替,即这里的 E:是 Windows 下的 F:盘。

NSET.COM 的作用是将传送过来的参数定义为自我识别的 $?,并可定义变量。
例如:HDRIVE.EXE|NSET.COM LASTPART=$%NUM%
HDRIVE.EXE 将 C:D:E:的参数传送给 NSET.COM,即代表:
C:  D:  E:
$1    $2    $3
LASTPART=$%NUM%
当 NUM 的值为 4 时,即LASTPART=空 (空代表如果存在此变量即删除此变量)
当 NUM 的值为 3 时,即LASTPART=E:

为什么要定义 NUM=25 ?循环的内容中先减1(经523066680提醒改进)

因为硬盘盘符是由 C:起计算的,24 就代表 Z:盘符了。

COUNT.COM 的作用是将数字变量的值进行运算
COUNT.COM NUM - 代表将变量的值减 1

IF "%LASTPART%"=="" GOTO CHECK
当变量 LASTPART 的值为空时,即还未到最后盘符的数字,循环,直至 NUM 的值是 3 时将 $3 代表的值 E:赋值给变量 LASTPART,这时 LASTPART 非空了,结束循环。

[ Last edited by chishingchan on 2009-10-19 at 12:55 ]
作者: 523066680     时间: 2009-10-12 17:54
hi ~ 2009第一次见到你发帖呢。
还记得我吗~

http://www.cn-dos.net/forum/viewthread.php?tid=39780

你说的那句话好鼓励我的^_^
-----------------------------------------


对了,你说是由C开始计算的,那么Z不应该是26了哦。

[ Last edited by 523066680 on 2009-10-12 at 17:59 ]
作者: chishingchan     时间: 2009-10-12 22:28


  Quote:
Originally posted by 523066680 at 2009-10-12 05:54 PM:
对了,你说是由C开始计算的,那么Z不应该是26了哦。...

对!谢谢提醒!这个低级的错误竟然发生在我的身上。哈哈!

没办法!项目多着呢!现在爱好的是VBS,DOS 现在需要用才会去研究,因此就会健忘,所以才发表这篇错文!
作者: 33445566     时间: 2009-10-13 20:54
再加个获纯DOS下最后的硬盘盘符的批处理更好