如何在缩略图视图中使用 Windows 文件过滤

如何在缩略图视图中使用 Windows 文件过滤

如果您在详细信息模式下查看文件夹并查看列标题,您将看到每个属性(名称、大小、专辑、艺术家等)旁边都有一个箭头。单击该箭头会显示一个菜单,其中列出了给定属性中所有可用的标签,您可以在其中选择要在该列上过滤的标签,然后您可以在另一列中执行相同操作以进一步过滤文件,等等。

这是文件过滤器的屏幕截图。

文件过滤器

我希望能够在其他文件夹视图(例如缩略图视图)中使用该功能。我不确定实现此目的的正确方法是什么。我想也许可以为这些菜单设置快捷方式,或者也许可以通过注册表调整在所有视图中始终显示详细信息列标题,但我不知道该怎么做。

在详细信息视图中进行过滤后,我可以将文件夹视图更改为其他任何视图,而过滤器保持不变,因此在其他视图中工作,但每次我想使用过滤器时,我都会切换到详细信息模式,然后再切换回缩略图,所以我想跳过这一步

答案1

注意:以下内容在我的笔记本电脑上运行:

版本 Windows 10 Home
版本 22H2
安装于 ‎8/‎10/‎2020
操作系统内部版本 19045.2486
体验 Windows 功能体验包 120.2212.4190.0

不再支持的功能随时可能发生变化。我还没有尝试过 Windows 11,所以这方面没有线索。


的一个组成部分探索者查看设置是一组标志,文件夹标志。通常抑制列标题显示的标志是:

FWF_NOHEADERINALLVIEWS
值:0x01000000
Windows Vista 及更高版本。仅在详细信息视图模式下显示列标题。

但即使在文件模板中清除了该标志,探索者在显示文件夹时覆盖它,并且标题仅显示在Details视图中。但在电源外壳,该标志可以被清除积极的 探索者窗口,将显示标题:

在此处输入图片描述

电源外壳代码将打开所有探索者运行命令时打开的窗口:

@((New-Object -Com shell.application).Windows()).ForEach({
    $_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff)
    $_.Refresh()
})

上述代码可以复制,粘贴到电源外壳控制台窗口,并执行以快速测试其可行性;但这不是日常使用的好方法。在我看来,为目录背景菜单最有意义。为此,我们需要代码的命令行版本。

Run适合对话框或作为快捷方式目标(因此也适合作为上下文菜单命令)的命令行将是:

PowerShell -NoProfile -ExecutionPolicy Bypass -Command '& {@((New-Object -Com shell.application).Windows()).ForEach({$_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff');$_.Refresh()})}'

但蓝色的光芒却短暂地闪过电源外壳命令执行时,cosole 会启动。为了解决这个问题,我们使用cmd.exe启动电源外壳最小化。启动电源外壳命令中存在cmd.exe特殊字符和引号的问题,这些问题通常可以通过引用.bat.ps1文件来解决,但我们可以通过使用 PowerShell 参数和 Base64 编码版本的命令来保持我们的注册表命令独立-EncodedCommand。以下代码可以作为块复制,粘贴到电源外壳cosole 并执行以创建上下文菜单项:

$PSCommand      = '@((New-Object -Com shell.application).Windows()).ForEach({ $_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff); $_.Refresh()})'
$CommandBytes   = [System.Text.Encoding]::Unicode.GetBytes($PSCommand)
$encodedCommand = [Convert]::ToBase64String($CommandBytes)

$CommandLine    = 'cmd.exe /c start /min "" PowerShell -NoProfile -ExecutionPolicy Bypass -EncodedCommand ' + $EncodedCommand

$RegKey         = 'HKCU:\SOFTWARE\Classes\Directory\Background\Shell\ShowColumnHeaders'

[PSCustomObject]@{
    '(Default)' = 'Show Column Headers'
   'Position' = 'Top'
} | Set-ItemProperty -Path (mkdir $RegKey -Force).PSPath

New-Item -Path $RegKey -Name Command -Value $CommandLine | out-null

如果您愿意,您可以通过合并文件来创建菜单项.reg。以下是上述代码创建的 reisgtry 键的导出。保存为文件.reg,然后合并以创建上下文菜单项:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\Shell\ShowColumnHeaders]
@="Show Column Headers"
"Position"="Top"

[HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\Shell\ShowColumnHeaders\Command]
@="cmd.exe /c start /min \"\" PowerShell -NoProfile -ExecutionPolicy Bypass -EncodedCommand QAAoACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AQwBvAG0AIABzAGgAZQBsAGwALgBhAHAAcABsAGkAYwBhAHQAaQBvAG4AKQAuAFcAaQBuAGQAbwB3AHMAKAApACkALgBGAG8AcgBFAGEAYwBoACgAewAgACQAXwAuAEQAbwBjAHUAbQBlAG4AdAAuAEYAbwBsAGQAZQByAEYAbABhAGcAcwAgAD0AIAAoACQAXwAuAEQAbwBjAHUAbQBlAG4AdAAuAEYAbwBsAGQAZQByAEYAbABhAGcAcwAgAC0AYgBhAG4AZAAgADAAeABmAGUAZgBmAGYAZgBmAGYAKQA7ACAAJABfAC4AUgBlAGYAcgBlAHMAaAAoACkAfQApAA=="

使用上述两种方法之一创建注册表键后,您应该会在背景上下文菜单顶部看到一个新项目探索者视窗:

在此处输入图片描述

执行后:

在此处输入图片描述

就像探索者覆盖模板设置,即使导航到当前文件夹的子文件夹,标题也会消失。我不知道有什么办法可以解决这个问题——你只需再次执行该命令即可。

相关内容