批处理获取 硬盘盘符
2010-01-27 10:53
@echo off
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|more') do (
set var=%%i
set drive=!var:~-2!
fsutil fsinfo drivetype !drive!|find "固定">nul && echo !drive!
)
pause
很有趣的脚本,实际应用当有有时就需要列举的是物理硬盘分区,不处理光驱,移动盘等的批处理操作。
setlocal enabledelayedexpansion 启用延迟的环境变量,不用的话变量会出错的,启用后调用变量用!var!这样的方式。
fsutil fsinfo drives输出如果的结果
C:\>fsutil fsinfo drives
驱动器: C:\ D:\ E:\
看似是以空格分割的,事实上不是空格,是全空。用UE这类的十六进制编辑工具查看即可知道中间空的部分是00,而不是空格的20。
用more命令可以逐行显示
set drive=!var:~-2! 用来截取最后两个字符
之后
fsutil fsinfo drivetype !drive!|find "固定">nul 查看该驱动器类型
&& echo !drive! 这里用了&&,前面的查找"固定"两个字,如果成功则执行打印
附:Fsutil:fsinfo 用法
主要由专业支持者使用。列出所有驱动器,查询驱动器类型,查询卷信息,查询特定的 NTFS 卷信息或文件系统统计信息。
语法
fsutil fsinfo [drives]
fsutil fsinfo [drivetype] PathName
fsutil fsinfo [ntfsinfo] RootPathName
fsutil fsinfo [statistics] VolumePathName
fsutil fsinfo [volumeinfo] RootPathName
参数
drives
列出计算机中所有的驱动器。
drivetype
查询驱动器并列出其类型,如 CD-ROM 驱动器。
ntfsinfo
列出指定卷的 NTFS 特定卷信息,例如扇区数、簇总数、可用簇以及 MFT 区的起点和结尾。
statistics
列出指定卷的文件系统统计信息,例如元数据、日志文件和 MFT 读取和写入。
volumeinfo
列出指定卷的信息,例如文件系统、卷是否支持大小写敏感的文件名、文件名中的 unicode 或磁盘配额。
PathName
指定驱动器号(冒号分隔)、装入点或卷名。
RootPathName
指定根驱动器的驱动器号(后面接冒号)。
VolumePathname
指定驱动器号(冒号分隔)、装入点或卷名。
范例
要查询驱动器 C 的驱动器类型,请键入:
fsutil fsinfo drivetype C:
可能的结果为:
未知驱动器
没有这样的根目录
可移动驱动器,如软驱
固定驱动器
远程/网络驱动器
CD-ROM 驱动器
Ram 磁盘
要查询卷 E 的卷信息,请键入:
fsinfo volumeinfo E:\
示例输出:
卷名:
卷系列号:0xd0b634d9
最大组件长度:255
文件系统名:NTFS
支持大小写敏感的文件名
保留文件名的大小写
支持文件名中的 Unicode
保留并加强 ACL
支持基于文件的压缩
支持磁盘配额
支持稀疏文件
支持重分析点
支持对象标识符
支持加密文件系统
支持带有名称的数据流
要查询 F 驱动器以获取特定 NTFS 卷信息,请键入:
fsutil fsinfo ntfsinfo F:\
示例输出:
NTFS 卷系列号:0xe660d46a60d442cb
号扇区:0x00000000010ea04f
总簇:0x000000000021d409
可用簇:0x00000000000f222a
总保留数:0x0000000000003550
每扇区字节数:512
每簇字节数:4096
每文件记录片段字节数: 1024
每文件记录片段簇数:0
Mft 有效数据长度:0x0000000003eab000
Mft 启动长度:0x0000000000000004
Mft2 起点长度:0x000000000010ea04
Mft 区起点:0x0000000000003ea0
Mft 区结尾:0x0000000000004700
要查询驱动器 E 的文件系统统计信息,请键入:
fsinfo statistics E:
示例输出:
文件系统类型:NTFS
版本:1
UserFileReads :75021
UserFileReadBytes :1305244512
UserDiskReads :71213
UserFileWrites :8037
UserFileWriteBytes :207685440
UserDiskWrites :5278
MetaDataReads :14377
MetaDataReadBytes :58888192
MetaDataDiskReads :14773
MetaDataWrites :18705
MetaDataWriteBytes :138108928
MetaDataDiskWrites : 21464