Board logo

标题: 请教高手:如何判断盘符是硬盘还是光驱或是软驱 [打印本页]

作者: HUNRYBECKY     时间: 2006-12-5 23:59    标题: 请教高手:如何判断盘符是硬盘还是光驱或是软驱

各位高手,我目前在写一个ACCESS绿色版,我想实现一个批处理实现在硬盘或在光盘或是在WINPE多环境中实现启动环境的设置。但是不知道怎么使用批处理判断盘符是硬盘还是光驱或是软驱或是虚拟磁盘?
请各位高手指教!
ACCESS绿色版本下载地址:ftp://xbdsoft.vicp.net (晚上7点后才开通)
QQ交流:9399100
作者: HUNRYBECKY     时间: 2006-12-6 08:32
怎么没有人回答我,是太简单了,还是太难了。
作者: HUNRYBECKY     时间: 2006-12-7 09:42
还是没有人回答,再等待,自己顶下。。。。。。。。。。。。。
作者: HUNRYBECKY     时间: 2006-12-7 09:43
补充下:如何使用批处理或DOS判断盘符是硬盘还是光驱或是软驱或是移动盘?
作者: lxmxn     时间: 2006-12-7 10:21

   Windows XP sp2 @ CMD  下面:
fsutil fsinfo drivetype %cd:~0,2%

作者: 3742668     时间: 2006-12-7 11:56

@echo off
    set /p x=输入盘符:
    for /f "skip=1" %%i in ('wmic logicaldisk where "deviceid='%x%:'" get Description 2^>nul') do set type=%%i
    if not defined type set type=此驱动器不存在!   
    echo %x%:盘的类型为: %type%
    pause>nul
goto :eof

作者: electronixtar     时间: 2006-12-7 12:11
可惜 fsutil 和 WMIC 只限于 XP Pro 或更高版本,XP Home 和 2000 都没有这个命令
作者: 3742668     时间: 2006-12-7 12:21


  Quote:
Originally posted by electronixtar at 2006-12-7 12:11:
可惜 fsutil 和 WMIC 只限于 XP Pro 或更高版本,XP Home 和 2000 都没有这个命令

试试这个命令:
start msinfo32 /categories +componentsstoragedrives /report info.txt
然后针对info.txt进行过滤则可得到分区情况了。
作者: lxmxn     时间: 2006-12-7 16:40

  版主真是强啊,这样的参数都挖掘出来了,佩服中……

作者: HUNRYBECKY     时间: 2006-12-10 05:11


  Quote:
Originally posted by 3742668 at 2006-12-7 12:21:

试试这个命令:
start msinfo32 /categories +componentsstoragedrives /report info.txt
然后针对info.txt进行过滤则可得到分区情况了。

谢谢几位楼主的精彩回答。的确判断磁盘类型受到很大的现在,即使使用
start msinfo32 /categories +componentsstoragedrives /report info.txt也有出现问题的地方,我这里使用DEEPIN的操作系统,系统里根本就没有这个命令,然后跑到别人的机器上试,产生了INFO.TXT文件,却是空的,我使用start msinfo32 也跳不出对话来,可能是他的电脑有问题吧,我最后跑到服务器上实验,结果才出来了。

还有没有其他的方法比较通用一点的,如果有工具也可以。
作者: lianjiang2004     时间: 2006-12-10 05:54
这样应该可以。
用ghost32.exe,运行ghost32  -dd,得到GHSTSTAT.TXT,里面的内容如下,分析一下,应能判断出来。
---------------------
*********************************
Date   : Sat Dec 09 16:52:21 2006
Error Number: (0)
Message: Stats Dump
Version: 8.3.0.1331 (Nov 28 2005, Build=1331)
OS Version: Microsoft Windows XP Professional Service Pack 1 (Build 2600)
Command line arguments: -dd
Active Switches :
       AutoName
PathName            :
DumpFile            :
DumpPos             : 0
FlagImplode         : 0
FlagExplode         : 0

Operation Details :
  Total size.........0
  MB copied..........0
  MB remaining.......0
  Percent complete...0%
  Speed..............0 MB/min
  Time elapsed.......0:00   
  Time remaining.....0:00   

Program Call Stack
sub_main
main

Call Stack
Address            Frame              Logical Addr              Module
0x000000007ffe0304 0x000000000012fbe0 0x0000:0x0000000000000000
0x000000000048fb28 0x000000000012fcc4 0x0001:0x000000000008eb28 D:\Ghost32.exe
0x00000000004023da 0x000000000012fdf0 0x0001:0x00000000000013da D:\Ghost32.exe
0x0000000000405e58 0x000000000012fee4 0x0001:0x0000000000004e58 D:\Ghost32.exe
0x0000000000419f91 0x000000000012ffc0 0x0001:0x0000000000018f91 D:\Ghost32.exe
0x0000000077e614c7 0x000000000012fff0 GetCurrentDirectoryW+0x0000000000000044
End Call Stack


Start heap available: 143282176
Cur   heap available: 142778368
Total Memory:         385335296

Conventional Memory
Inital Conventional Memory Size = 0
Current Conventional Memory Size = 0
Allocated
  33500 ghost.cpp:1386
Free

Fat details:

NTFS details:
----------------

NTFS Global Flags:
----------------
         contiguousWrite=1 forceDiskClusterMapping=0
         inhibitCHKDSK=1 ignoreBadLog=0 ignoreCHKDSKBit=0
         enable_cache=0 xfrbuflen=0
         last_attr_type = 0
         loadExact = 0
----------------

Disk Info :
  remote.............0
  drive..............0
  sectors_used.......39069884
  estimated_used.....0
  pemax..............3
  Version............0

# Ord Boot Id Ext     First        Num       Last       Used NTFS
0  0   80   b No         63    8193080    8193143          0 No
1  1    0   7 Yes    8193213   10233342   18426555          0 No
2  2    0   b Yes   18426618   20643462   39070080          0 No

Disk Info :
  remote.............0
  drive..............0
  sectors_used.......0
  estimated_used.....0
  pemax..............0
  Version............0

# Ord Boot Id Ext     First        Num       Last       Used NTFS

Fixed Drives

Drive 0 TOSHIBA MK2018GAP Z1GC3227T
WinNT (Active)
Total Sectors            39070080
Bytes per Sector         512
MB                       19077
Cylinders                2432
Heads                    255
Sectors per Track        63
Successful IO Count      67

Floppy Drives

Remote Drives
AsyncIo : 0
Image Devices

Key[1]   1:1
Key[2]   C:
Path     C:
Desc     C: 1:1 [WINXP]
Type     FAT
Disk     0
Offset   63

Key[1]   1:2
Key[2]   D:
Path     D:
Desc     D: 1:2 [PRO]
Type     NTFS
Disk     0
Offset   8193213

Key[1]   1:3
Key[2]   E:
Path     E:
Desc     E: 1:3 [DATA]
Type     FAT
Disk     0
Offset   18426618

Key[1]   F:
Path     F:
Desc     F:
Type     CD

Key[1]   I:
Path     I:
Desc     I:
Type     CD


*********************************
作者: electronixtar     时间: 2006-12-10 09:39
依我的意思,还是用 \\?\CdRom0吧。软驱就不用判断了,不是A: 就是 B:。至于光驱, tree \\?\CdRom0\ 就可以得到光驱列表。
作者: HUNRYBECKY     时间: 2006-12-12 02:43


  Quote:
Originally posted by lxmxn at 2006-12-7 10:21:

   Windows XP sp2 @ CMD  下面:
fsutil fsinfo drivetype %cd:~0,2%

问下XMXN兄,%cd:~0,2%表示什么意思,是不是一个特殊变量,是不是表示返回到根目录,实际是取当前路径的最前面两个字符,那么%cd:~0,3%就是取当前路径的的前三个字符,如C:\
很有意思,这些东西以前都没有见过。非常感谢,如果上面是特殊变量的话,能否提供更多的特殊变量的用法。
作者: HUNRYBECKY     时间: 2006-12-12 02:58


  Quote:
Originally posted by lianjiang2004 at 2006-12-10 05:54:
这样应该可以。
用ghost32.exe,运行ghost32  -dd,得到GHSTSTAT.TXT,里面的内容如下,分析一下,应能判断出来。
------------------@...

此方法的确可以,但是比较麻烦,一是必须要有GHOST32.EXE这个文件,其次使用命令后产生的文本内容不是很固定,所以分析该文件比较困难。
谢谢楼主的回答,期待更好的方法。
作者: HUNRYBECKY     时间: 2006-12-12 03:04


  Quote:
Originally posted by electronixtar at 2006-12-10 09:39:
依我的意思,还是用 \\?\CdRom0吧。软驱就不用判断了,不是A: 就是 B:。至于光驱, tree \\?\CdRom0\ 就可以得到光驱列表。

好象这个不能判断驱动器的类型吧,只能判断是否有光盘存在,我使用你的命令,结果返回的“无效驱动器规格”,不知道什么意思。
作者: lxmxn     时间: 2006-12-12 04:06


  Quote:
问下XMXN兄,%cd:~0,2%表示什么意思,是不是一个特殊变量,是不是表示返回到根目录,实际是取当前路径的最前面两个字符,那么%cd:~0,3%就是取当前路径的的前三个字符,如C:\
很有意思,这些东西以前都没有见过。非常感谢,如果上面是特殊变量的话,能否提供更多的特殊变量的用法。

  截取字符的你已经知道了。更多的变量见set命令。

作者: HUNRYBECKY     时间: 2006-12-13 00:26
感谢lxmxn的回答,正在学习中,最近找了很多WMI和WMIC的资料,如果有需要的给我留言。其中有一本基本上绝版的《WMI技术指南》