fsutil file
按用户名查找文件(如果启用了磁盘配额)、查询文件的已分配范围、设置文件的短名称、设置文件的有效数据长度、为文件设置零数据,或创建新文件。
语法
fsutil file [createnew] <filename> <length>
fsutil file [findbysid] <username> <directory>
fsutil file [optimizemetadata] [/A] <filename>
fsutil file [queryallocranges] offset=<offset> length=<length> <filename>
fsutil file [queryextents] [/R] <filename> [<startingvcn> [<numvcns>]]
fsutil file [queryfileid] <filename>
fsutil file [queryfilenamebyid] <volume> <fileid>
fsutil file [queryoptimizemetadata] <filename>
fsutil file [queryvaliddata] [/R] [/D] <filename>
fsutil file [seteof] <filename> <length>
fsutil file [setshortname] <filename> <shortname>
fsutil file [setvaliddata] <filename> <datalength>
fsutil file [setzerodata] offset=<offset> length=<length> <filename>
参数
参数 | 说明 |
---|---|
createnew | 创建具有指定名称和大小的文件,其内容由零组成。 |
<length> |
指定文件的有效数据长度。 |
findbysid | 在启用了磁盘配额的 NTFS 卷上查找属于指定用户的文件。 |
<username> |
指定用户的用户名或登录名。 |
<directory> |
指定目录的完整路径,例如 C:\users。 |
optimizemetadata | 这会立即压缩给定文件的元数据。 |
/a | 在优化前后分析文件元数据。 |
queryallocranges | 查询 NTFS 卷上文件的已分配范围。 用于确定文件是否具有稀疏区域。 |
offset=<offset> |
指定应设置为多个零的范围的开头。 |
length=<length> |
指定范围的长度(以字节为单位)。 |
queryextents | 查询文件的盘区。 |
/r | 如果 <filename> 是重新分析点,请打开它而非其目标。 |
<startingvcn> |
指定要查询的第一个 VCN。 如果省略此项,则从 VCN 0 开始。 |
<numvcns> |
要查询的 VCN 数。 如果此项已省略或为 0,则查询到 EOF 为止。 |
queryfileid | 查询 NTFS 卷上文件的文件 ID。 |
<volume> |
将卷指定为驱动器名称,后跟冒号。 |
queryfilenamebyid | 显示 NTFS 卷上指定文件 ID 的随机链接名称。 由于文件可以有多个指向该文件的链接名称,因此不能保证查询文件名后会提供哪个文件链接。 |
<fileid> |
指定 NTFS 卷上文件的 ID。 |
queryoptimizemetadata | 查询文件的元数据状态。 |
queryvaliddata | 查询文件的有效数据长度。 |
/d | 显示详细的有效数据信息。 |
seteof | 设置给定文件的 EOF。 |
setshortname | 为 NTFS 卷上的文件设置短名称(8.3 个字符长度的文件名)。 |
<shortname> |
指定文件的短名称。 |
setvaliddata | 设置 NTFS 卷上文件的有效数据长度。 |
<datalength> |
指定文件的长度(以字节为单位)。 |
setzerodata | 将文件的范围(由 offset 和 length 指定)设置为多个零,从而清空文件。 如果文件是稀疏文件,则取消提交基础分配单元。 |
备注
在 NTFS 中,有两个重要的文件长度概念:文件结束 (EOF) 标记和有效数据长度 (VDL)。 EOF 指示文件的实际长度。 VDL 标识磁盘上的有效数据的长度。 在 VDL 和 EOF 之间的任何读取都会自动返回 0 以保留 C2 对象重用要求。
setvaliddata 参数仅供管理员使用,因为它需要“执行卷维护任务”(SeManageVolumePrivilege) 特权。 只有高级多媒体和系统区域网络方案才需要此功能。 setvaliddata 参数必须是大于当前 VDL 但小于当前文件大小的正值。
在以下情况下,程序设置 VDL 很有用:
通过硬件通道将原始群集直接写入磁盘。 这样程序就会通知文件系统:该范围包含可以返回给用户的有效数据。
在性能出现问题时创建大型文件。 这避免了在创建或扩展文件时用多个零填充文件所花费的时间。
示例
若要在驱动器 C 上查找 scottb 拥有的文件,请键入:
fsutil file findbysid scottb c:\users
若要查询 NTFS 卷上文件的已分配范围,请键入:
fsutil file queryallocranges offset=1024 length=64 c:\temp\sample.txt
若要优化文件的元数据,请键入:
fsutil file optimizemetadata C:\largefragmentedfile.txt
若要查询文件的盘区,请键入:
fsutil file queryextents C:\Temp\sample.txt
若要设置文件的 EOF,请键入:
fsutil file seteof C:\testfile.txt 1000
若要将驱动器 C 上的文件 longfilename.txt 的短名称设置为 longfile.txt,请键入:
fsutil file setshortname c:\longfilename.txt longfile.txt
若要将 NTFS 卷上名为 testfile.txt 的文件的有效数据长度设置为 4096 字节,请键入:
fsutil file setvaliddata c:\testfile.txt 4096
若要将 NTFS 卷上的文件的范围设置为多个零以清空它,请键入:
fsutil file setzerodata offset=100 length=150 c:\temp\sample.txt