批处理获取硬盘盘符

批处理获取 硬盘盘符
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! 用来截取最后两个字符

字符串操作参考:hi.baidu.com/pur_e/blog/item/4913d6dc6974383e5982dd09.html


之后
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



来自于:
http://hi.baidu.com/pur_e/blog/item/17cc5f16f871380a4b90a755.html

你可能感兴趣的:(C++,c,C#,网络应用,F#)