[TOC]

1.文件系统属性

fsutil 命令

描述:FSutil命令显示或配置文件系统的属性;

基础用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
fsutil
# ---- 支持的命令 ----
8dot3name 8dot3name 管理
behavior 控制文件系统行为
dirty 管理卷的已损坏位数
file 文件特定命令
fsinfo 文件系统信息
hardlink 硬链接管理
objectid 对象 ID 管理
quota 配额管理
repair 自疗管理
reparsepoint 重分析点管理
resource 事务资源管理器管理
sparse 稀疏文件控制
transaction 事务管理
usn USN 管理
volume 卷管理

基础详解:

  • behavior:查询、更改、启用或禁用下列行为的相关设置:生成 8.3 字符长文件名、接收 NTFS 卷上的 8.3 字符长文件名内的扩展字符、更新 NTFS 卷上的最近访问时间戳、配额事件写入系统日志的频率以及保留给 MFT 区的磁盘空间量
  • dirty:查询是否设置了卷的坏区。设置卷的坏区。当一个卷的坏区设置后,在下次重新启动计算机时将不使用
  • file:主要由专业支持者使用。根据安全标识符查找文件、查询文件的分配范围、设置文件简短名称、设置文件的有效数据长度或设置文件零数据。
  • fsinfo:主要由专业支持者使用。列出所有驱动器,查询驱动器类型、卷信息,查询特定的 NTFS 卷信息,或查询文件系统统计数据。
  • hardlink:创建硬连接。硬连接就是某个文件的目录入口。每个文件都可认为至少有一个硬连接。在 NTFS 卷上,每个文件都有多个硬连接,因而一个文件可以出现在多个目录(甚至具有不同名称的相同目录)中。由于所有链接都引用同一个文件,所以程序能打开任意链接并修改文件。只有当一个文件的所有链接都删除后,该文件才能从文件系统中删除。创建硬连接后,程序可以象使用其它任何文件名那样使用它。
  • objectid:主要由专业支持者使用。管理对象标识符,该标识符由 Windows XP 用于跟踪如文件和目录等的对象)。
  • quota:管理 NTFS 卷上的磁盘配额,以便对网络存储的提供更精确控制。磁盘配额是根据每个卷来实施的,并以每个用户为基础启用硬存储和软存储限制。
  • reparsepoint:主要由专业支持者使用。查询或删除重新分析点,这些重新分析点是 NTFS 文件系统对象,而这些对象具有可定义的包含用户控制数据的属性,这些重新分析点在输入/输出 (I/O) 子系统中用于扩展功能。重新分析点作为目录连接点和卷安装点。文件系统过滤驱动程序使用重新分析点来标记该驱动程序特定的某些文件。
  • sparse:管理稀疏文件 。稀疏文件是指内部具有一个或多个未分派的数据区域的文件。程序将会发现这些未分派的包含零字节的区域,但是没有实际的磁盘空间用来代表这些零。换句话说,所有有意义或非零数据得到了分配,反之所有无意义的数据(大串由零组成的数据)没有得到分配。当读入稀疏文件时,已分配的数据以存储方式返回,在默认情况下,按照 C2 安全需求未分配的数据也返回。稀疏文件支持允许在文件的任意位置解除分配数据。
  • usn:主要由专业支持者使用。管理更新序列号 (USN) 会改变日志,该日志提供了永久的对卷中所有对文件做过修改的的记录。
  • volume:管理卷,卸下卷,或查看磁盘上的可用空间。


File参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fsutil file [createnew] PathName length
fsutil file [findbysid] User PathName
fsutil file [queryallocranges] offset=offset length=length PathName
fsutil file [setshortname] PathName shortname
fsutil file [setvaliddata] PathName datalength
fsutil file [setzerodata] offset=offset length=length PathName
#参数
createnew---创建指定名称和大小的文件,该文件的内容由零组成。
PathName---指定驱动器号(冒号分隔)、装入点或卷名
length---指定文件的有效数据长度

findbysid---查找属于特定用户的NTFS 卷上的文件。用户由自己的 SID(安全标识符)标识。
User---指定用户名或登录名

queryallocranges---查询 NTFS 卷上的文件分配范围。可用于确定文件是否具有稀疏区域。
offset=offset---指定设置零的范围起始点,指定文件偏移量和设置为零的范围起始点.
length=length ---指定范围长度(以字节表示)

setshortname---设置NTFS 卷上文件的简短名称(8.3 字符长度文件名)
shortname---指定文件简短名称

setvaliddata---设置 NTFS 卷上文件的有效数据长度
datalength---指定文件长度(以字节表示)

setzerodata---将文件范围(由 offset 和 length 指定)设置为零,从而使文件为空。如果是稀疏文件,则不需要基本分配单元

注释:

  • 使用 setvaliddata在 NTFS 中,有两个关于文件长度的重要概念:文件尾 (EOF) 标记和有效数据长度 (VDL)。EOF 指定文件的实际长度。VDL 标识磁盘上有效数据的长度。
  • VDL 和 EOF 之间的任何读操作都将自动返回 0 以便保留 C2 对象重新使用要求。
  • 只有管理员可以使用 setvaliddata 参数,因为该参数要求有“管理卷”的特权,只有高级多媒体和系统区域网络 (SAN) 环境才需要使用该功能。

基础案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#1.创建一个大小为300字节的new.txt
fsutil file createnew new.txt 300

#2.要根据 SID 查找驱动器 C 上的用户 scottb
fsutil file findbysid scottb C:\users

#3.new文件的ID获取
fsutil file queryfileid new.txt

#4.new文件的随机链接名称获取
fsutil file queryfilenamebyid E:\ 0x002e0000000001a1

#5.设置windows文件夹为区分大小写的命令 (用disable关闭区分大小写)
fsutil.exe file SetCaseSensitiveInfo 'F:\aaa' enable

WeiyiGeek.

WeiyiGeek.


fsinfo参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#1.获得各个驱动器盘符
fsutil fsinfo drives
驱动器: C:\ D:\ E:\ F:\ G:\


#2.驱动器的类型
fsutil fsinfo drivetype d:
#d: - 固定驱动器
fsutil fsinfo drivetype G:
#G: - CD-ROM 驱动器

#可能的结果为
* 未知驱动器
* 没有这样的根目录
* 可移动驱动器,如软驱
* 固定驱动器
* 远程/网络驱动器
* CD-ROM 驱动器
* Ram 磁盘


#3.系统统计
fsutil fsinfo statistics D:

WeiyiGeek.

WeiyiGeek.

1
2
#4.要查询 F 驱动器以获取特定 NTFS 卷信息
fsutil fsinfo ntfsinfo F:\
WeiyiGeek.

WeiyiGeek.


dirty参数

1
2
3
4
5
6
#语法:
fsutil dirty {query|set} PathName
#参数:
query 查询坏区
set 设置卷的坏区
PathName 指定驱动器号(冒号分隔)、装入点或卷名

基础示例:

1
2
3
4
5
#1.要查询驱动器 C 上的坏区,请键入
fsutil dirty query C:
# 示例输出:
# 卷 C:已坏或
# 卷 C:未坏要设置驱动器 C 上的坏区

WeiyiGeek.

WeiyiGeek.


behavior参数
描述:查询下列行为的当前设置,生成 8.3 字符长的文件名、允许 NTFS 卷上 8.3 字符长的文件名中的扩展字符、更新 NTFS 卷上的最近访问时间戳、配额事件写入系统日志中的频率以及主文件表 (MFT) 区的大小。
启用或禁用 8.3 字符长文件名的使用、允许 NTFS 卷上 8.3 字符长文件名中的扩展字符以及更新 NTFS 卷上的最近访问时间戳。允许更改配额事件写入系统日志中的频率以及保留给MFT 区的磁盘空间量。

基础语法:

1
2
fsutil behavior query {disable8dot3|allowextchar|disablelastaccess|quotanotify|mftzone}
fsutil behavior set [{disable8dot3 {1|0}|allowextchar {1|0}|disablelastaccess {1|0}|quotanotify freqncy|mftzoneval}]

参数:

  • disable8dot3 {1|0} 在 FAT 和 NTFS 格式化的卷上禁用创建 8.3 字符长文件名。
  • allowextchar {1|0} 确定来自扩展字符集中的字符是否可用于 NTFS 卷上的 8.3 短文件名中。
  • disablelastaccess {1|0} 确定当列出 NTFS 卷上的目录时,NTFS 是否更新各个目录上的最近访问时间戳。
  • quotanotify freqncy 配置 NTFS 配额侵犯在系统日志中的报告频率。该配额侵犯写入系统日志的时间频率为 0 秒到 4294967295 秒之间。默认值为 1 小时(3600 秒)。
  • mftzone val 主文件表 (MFT) 区是一个保留的区域,可在需要时启用 MFT 扩展,以防止 MFT 出现碎片。将 val 设置为从 1(默认值)到 4(最大值;val 在该磁盘的第 8 区中。

基础示例:

1
2
#1.查询内存得使用
fsutil behavior query memoryUsage

WeiyiGeek.

WeiyiGeek.


hardlink参数
描述:等同于Linux中得ln命令建立得硬链接,硬连接就是某个文件的目录入口,每个文件都可认为至少有一个硬连接。
在 NTFS 卷上每个文件都有多个硬链接,所以一个文件可能出现在多个目录中(甚至以不同的文件名出现在相同目录中)。
既然所有的链接都引用同一个文件,所以程序能打开任意链接并修改文件,只有当一个文件的所有链接都删除后,该文件才能从文件系统中删除
基础语法:

1
2
3
4
5
fsutil hardlink create NewFilename ExistingFilename
#参数
creat 建立现有文件和新文件之间的 NTFS 硬链接,NTFS 硬链接与 POSIX 硬链接相似。
NewFilename 指定要创建硬链接的文件
ExistingFilename 指定要创建硬链接的文件

基础示例:

1
2
#创建硬链接
fsutil hardlink create ChangeLinuxCommand1.bat ChangeLinuxCommand.bat

WeiyiGeek.

WeiyiGeek.


volume参数
描述:管理卷卸下卷或查看磁盘上的可用空间。
基础语法:

1
2
3
4
5
6
7
8
fsutil volume [diskfree] drivename
fsutil volume [dismount] VolumePathname

diskfree 查询卷上的可用空间
dismount 卸下卷

drivename 指定驱动器号(后面接冒号)
VolumePathname 指定驱动器号(冒号分隔)、装入点或卷名

基础示例:

1
2
3
4
5
#1.要卸下驱动器 C 上的卷,请键入:
fsutil volume dismount C:

#2.要查询驱动器 C 上卷的可用空间,请键入:
fsutil volume diskfree C:

WeiyiGeek.

WeiyiGeek.


8dot3name参数
描述:对于文件得短名称得处理;
基础示例:

1
2
3
4
5
6
#如果从此路径中删除了短名称,此命令会扫描指定的目录路径,查找可能会受影响的注册表项
fsutil 8dot3name scan </s> </l log file> </v> DirectoryPath
/s - 递归模式 - 指定还应将此操作应用于子目录
/v - 详细模式 - 指定还应将所有记录的信息打印到控制台
/l - 指定要写入的日志文件。后面必须加上指向日志文件的路径
#如果未指定此选项,日志文件将为:"%temp%\[email protected](GMT YYYY-MM-DD HH-MM-SS).log"

基础示例:

1
2
3
4
5
6
# 1.在系统上查询当前设置的短名称行为
FSUTIL 8dot3name query
# 注册表状态为: 2 (按卷设置 - 默认值)

# 2.示例命令
fsutil 8dot3name scan /l mylogfile.log /s D:\MyData

WeiyiGeek.

WeiyiGeek.

补充示例:除了用find /v “”这外,还可以用more 两个的效果是一样的

1
2
3
4
#如果只用fsutil fsinfo dreves的话所显示的结果中的各个盘符之间不是空格(例如:d:\ e:\)而是nul,在十六进制里面的空格应该是20,如图:
#大家从图上可以清楚的看到各个盘符之间的代码是00也就是十六进制的nul,所以这就是find用""的意思,用了fsutil fsinfo drives|find /v ""
fsutil fsinfo drives |more #盘符之间的代码已经变以0A 0D (回车换行)
* fsutil fsinfo drives | find /v ""

WeiyiGeek.

WeiyiGeek.


Pushd命令

描述:保存当前目录以供 POPD 命令使用,然后改到指定的目录
语法:

1
2
3
PUSHD [path | ..]
#参数:
path 指定要成为当前目录的目录。

如果命令扩展被启用,除了一般驱动器号和路径,PUSHD命令还接受网络路径。
如果指定了网络路径,PUSHD 将创建一个指向指定网络资源的临时驱动器号,然后再用刚定义的驱动器号更改当前的驱动器和目录。
可以从 Z: 往下分配临时驱动器号,使用找到的第一个没有用过的驱动器号。


POPD命令

描述:更改到 PUSHD 命令存储的目录 POPD
如果命令扩展被启用,从推目录堆栈 POPD 驱动器时,POPD命令会删除 PUSHD 创建的临时驱动器号。

案例:

1
2
3
4
pushd %systemroot%
>cd /d f:\WizNote\temp\c72affac-c61b-4c46-8e83-6587ecd57296
f:\WizNote\temp\c72affac-c61b-4c46-8e83-6587ecd57296>popd
C:\Windows>cd

WeiyiGeek.

WeiyiGeek.


clip 命令

描述:可以通过标准输出或者输入将字符串复制到windows缓冲区中即 Windows 剪贴板;

基础示例:

1
2
3
#描述:将命令行工具的输出重定向到 Windows 剪贴板。这个文本输出可以被粘贴
DIR | CLIP #将一份当前目录列表的副本放入 Windows 剪贴板。
CLIP < README.TXT # 将 readme.txt 的一份文本放入 Windows 剪贴板。