Jer*_*ers 3 windows compression windows-explorer file-search
我知道 Windows 资源管理器可以在常规视图和搜索视图中为文件的 NTFS 压缩状态着色。
如何专门过滤/搜索在 NTFS 级别压缩或未压缩的文件?
最好是在 Windows XP 及更高版本中工作的解决方案(有相当多的硬件设备没有适用于任何 Vista 及更高版本的驱动程序)。
由于 Windows 搜索过于占用 CPU,我也想要一个没有它的解决方案。
Windows XP 没有提供开箱即用的列出压缩文件的方法,甚至高级搜索方法也不是为此类任务设计的。命令提示符来救援:
cd /d "C:\Some folder"
compact | findstr /c:" 1 C"
Run Code Online (Sandbox Code Playgroud)
该cd命令仅用于导航到目标目录。当该compact命令不带参数运行时,它将列出所有文件及其压缩详细信息(如果有)。然后可以通过将其重定向到findstr. 值得一提的是,这种方法甚至可以在 Windows 2000 上运行。
尽管如此,输出还是相当冗长。要去除额外的信息,还需要做更多的工作:
for /f "tokens=9,*" %A in ('"compact | findstr /c:" 1 C" "') do @dir /b "%A*%B" 2>nul
Run Code Online (Sandbox Code Playgroud)
上面的命令将仅显示压缩文件名。该dir命令将有助于验证文件名以避免误报(例如1 C,名称中包含字符串 的文件名)。
您可以使用的其他参数是:
/s 将命令应用于所有子文件夹。/a 显示隐藏文件或系统文件。请注意,如果需要,这些参数必须同时用于命令compact和dir命令。
要列出未压缩的文件,您可以使用命令的/v参数findstr来反转过滤器,并将tokens值更改为8(这是因为未压缩的文件没有C标记,会影响字符串标记化)。
Windows 搜索查询在高级查询语法 (AQS) 中指定,它不仅支持简单的文本搜索,还提供基于属性的高级查询操作。
AQS 最初是随 Windows 桌面搜索一起引入的,后来经过改进并作为Windows 搜索集成到 Windows Vista 中。您需要在早期操作系统中单独安装它。
以下查询将列出所有设置了存档属性并被压缩的文件。它适用于 Windows XP、Vista 和 7。它也应该适用于 Windows 8.x,虽然我没有测试。
System.FileAttributes:(2080)
Run Code Online (Sandbox Code Playgroud)
在英语语言环境中,您还可以使用:
attributes:(2080)
Run Code Online (Sandbox Code Playgroud)
以下是最有用的值的列表:
FILE_ATTRIBUTE_READONLY = 1
FILE_ATTRIBUTE_HIDDEN = 2
FILE_ATTRIBUTE_SYSTEM = 4
FILE_ATTRIBUTE_ARCHIVE = 32
FILE_ATTRIBUTE_COMPRESSED = 2048
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我结合了FILE_ATTRIBUTE_ARCHIVE和FILE_ATTRIBUTE_COMPRESSED: 32 + 2048 = 2080。
您可以使用逻辑OR运算符搜索任何组合。例如,要搜索只读或非只读的压缩文件:
System.FileAttributes:(2080 OR 2081)
Run Code Online (Sandbox Code Playgroud)
要反转搜索结果,您可以使用NOT运算符:
System.FileAttributes:NOT(2080 OR 2081)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8108 次 |
| 最近记录: |