楼 主
请教高手:如何判断盘符是硬盘还是光驱或是软驱
发表于 2006-12-05 23:59 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
各位高手,我目前在写一个ACCESS绿色版,我想实现一个批处理实现在硬盘或在光盘或是在WINPE多环境中实现启动环境的设置。但是不知道怎么使用批处理判断盘符是硬盘还是光驱或是软驱或是虚拟磁盘?
请各位高手指教!
ACCESS绿色版本下载地址:
ftp://xbdsoft.vicp.net (晚上7点后才开通)
QQ交流:9399100
第 2 楼
发表于 2006-12-06 08:32 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
第 3 楼
发表于 2006-12-07 09:42 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
还是没有人回答,再等待,自己顶下。。。。。。。。。。。。。
第 4 楼
发表于 2006-12-07 09:43 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
补充下:如何使用批处理或DOS判断盘符是硬盘还是光驱或是软驱或是移动盘?
第 5 楼
发表于 2006-12-07 10:21 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
Windows XP sp2 @ CMD 下面:
fsutil fsinfo drivetype %cd:~0,2%
第 6 楼
发表于 2006-12-07 11:56 · 中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013 发帖 718 注册 2006-02-18 07:07 UID 50550
状态 离线
@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
第 7 楼
发表于 2006-12-07 12:11 · 中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493 发帖 2,672 注册 2005-09-02 00:00 UID 42173 性别 男
状态 离线
可惜 fsutil 和 WMIC 只限于 XP Pro 或更高版本,XP Home 和 2000 都没有这个命令
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'>"
第 8 楼
发表于 2006-12-07 12:21 · 中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013 发帖 718 注册 2006-02-18 07:07 UID 50550
状态 离线
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进行过滤则可得到分区情况了。
本帖最近评分记录
(共 1 条)
点击查看详情
评分人 分数 时间
lxmxn
+3
2006-12-07 16:40
第 9 楼
发表于 2006-12-07 16:40 · 中国 湖北 武汉 电信
版主
★★★★★
积分 11,386 发帖 4,938 注册 2006-07-23 17:10 UID 59080
状态 离线
第 10 楼
发表于 2006-12-10 05:11 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
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 也跳不出对话来,可能是他的电脑有问题吧,我最后跑到服务器上实验,结果才出来了。
还有没有其他的方法比较通用一点的,如果有工具也可以。
第 11 楼
发表于 2006-12-10 05:54 · 中国 安徽 马鞍山 电信
金牌会员
★★★★
积分 3,946 发帖 1,884 注册 2006-01-20 13:00 UID 49283 性别 男
状态 离线
这样应该可以。
用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
*********************************
第 12 楼
发表于 2006-12-10 09:39 · 中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493 发帖 2,672 注册 2005-09-02 00:00 UID 42173 性别 男
状态 离线
依我的意思,还是用 \\?\CdRom0吧。软驱就不用判断了,不是A: 就是 B:。至于光驱, tree \\?\CdRom0\ 就可以得到光驱列表。
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'>"
第 13 楼
发表于 2006-12-12 02:43 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
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:\
很有意思,这些东西以前都没有见过。非常感谢,如果上面是特殊变量的话,能否提供更多的特殊变量的用法。
第 14 楼
发表于 2006-12-12 02:58 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
Originally posted by lianjiang2004 at 2006-12-10 05:54:
这样应该可以。
用ghost32.exe,运行ghost32 -dd,得到GHSTSTAT.TXT,里面的内容如下,分析一下,应能判断出来。
------------------@...
此方法的确可以,但是比较麻烦,一是必须要有GHOST32.EXE这个文件,其次使用命令后产生的文本内容不是很固定,所以分析该文件比较困难。
谢谢楼主的回答,期待更好的方法。
第 15 楼
发表于 2006-12-12 03:04 · 中国 广东 东莞 电信
银牌会员
★★★
积分 1,179 发帖 442 注册 2006-09-09 22:47 UID 62249
状态 离线
Originally posted by electronixtar at 2006-12-10 09:39:
依我的意思,还是用 \\?\CdRom0吧。软驱就不用判断了,不是A: 就是 B:。至于光驱, tree \\?\CdRom0\ 就可以得到光驱列表。
好象这个不能判断驱动器的类型吧,只能判断是否有光盘存在,我使用你的命令,结果返回的“无效驱动器规格”,不知道什么意思。
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正