Если вы просматриваете папку в режиме подробностей и смотрите на заголовок столбца, вы увидите стрелку рядом с каждым из свойств (имя, размер, альбом, исполнитель и т. д.). Щелкнув по этой стрелке, вы увидите меню со списком всех доступных тегов в данном свойстве, где вы можете выбрать те, которые хотите отфильтровать по этому столбцу, затем вы можете отфильтровать файлы еще дальше, сделав то же самое в другом столбце и т. д.
Вот скриншот фильтров файлов.
Я хочу иметь возможность использовать эту функцию в других представлениях папок, например, в представлении миниатюр. Я не уверен, какой подход является правильным для достижения этого. Я думал, может быть, может быть, есть ярлык для этих меню или, возможно, настройка реестра, чтобы всегда показывать заголовок столбца подробностей во всех представлениях, но я понятия не имею, как это сделать.
После фильтрации в подробном представлении я могу изменить представление папки на любое другое, и фильтры останутся нетронутыми, поэтомуделаетработать в других представлениях, но мне приходится переключаться в режим детализации, а затем возвращаться к режиму миниатюр каждый раз, когда я хочу использовать фильтр, поэтому я хочу пропустить этот шаг
решение1
Примечание: На моем ноутбуке работает следующее:
Издание Windows 10 Home
Version 22H2
Установлено 8/10/2020
Сборка ОС 19045.2486
Опыт Windows Feature Experience Pack 120.2212.4190.0
Функции, которые больше не поддерживаются, могут измениться в любой момент. Я не пробовал Windows 11, да, так что не знаю на этот счет.
Один из компонентовИсследовательНастройки просмотра — это набор флагов,ПапкаФлаги. флаг, который обычно подавляет отображение заголовков столбцов:
FWF_NOHEADERINALLVIEWS
Значение: 0x01000000
Windows Vista и более поздние версии. Показывать заголовок столбца только в режиме просмотра подробностей.
Но даже если флаг в шаблоне файла снят,Исследовательпереопределяет его при отображении папки, и заголовки отображаются только в Details
представлении. Но вPowerShell, флаг может быть очищен дляактивный Исследовательокна, и заголовки будут отображаться:
ЭтотPowerShellкод включит заголовки столбцов во всехИсследовательокна, которые открываются при запуске команды:
@((New-Object -Com shell.application).Windows()).ForEach({
$_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff)
$_.Refresh()
})
Приведенный выше код можно скопировать и вставить вPowerShellконсольное окно, и выполнено для быстрого теста его жизнеспособности; но это не лучший способ выполнить его для повседневного использования. Мне показалось, что создание записи контекстного меню дляфон каталогаmenu имело наибольший смысл. Для этого нам нужна версия кода для командной строки.
Командная строка, подходящая для Run
диалогового окна или в качестве цели сочетания клавиш (и, следовательно, также подходящая в качестве команды контекстного меню), будет выглядеть следующим образом:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command '& {@((New-Object -Com shell.application).Windows()).ForEach({$_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff');$_.Refresh()})}'
Но есть раздражающая короткая вспышка синегоPowerShellcosole при выполнении команды. Чтобы обойти это, мы используем cmd.exe
для запускаPowershellсвернуто. ЗапускPowerShellкоманды из cmd.exe
представляет проблемы со специальными символами и кавычками, которые часто решаются с помощью ссылок .bat
или .ps1
файлов, но мы можем сохранить нашу команду regsitry автономной, используя -EncodedCommand
параметр PowerShell с версией команды в кодировке Base64. Следующий код можно скопировать как блок, вставить вPowerShellcosole и выполнено для создания записи контекстного меню:
$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=="
После использования любого из двух вышеперечисленных методов для создания ключей реестра вы должны увидеть новый элемент в верхней части фонового контекстного менюИсследовательокна:
После выполнения:
Как толькоИсследовательпереопределить настройки шаблона, заголовки исчезнут даже при переходе в подпапку текущей папки. Я не знаю способа обойти это -- вам просто нужно выполнить команду еще раз.