Wenn Sie einen Ordner im Detailmodus anzeigen und die Spaltenüberschrift betrachten, sehen Sie neben jeder der Eigenschaften (Name, Größe, Album, Künstler usw.) einen Pfeil. Wenn Sie auf diesen Pfeil klicken, wird ein Menü mit allen verfügbaren Tags in der jeweiligen Eigenschaft angezeigt. Dort können Sie diejenigen auswählen, die Sie in dieser Spalte filtern möchten. Anschließend können Sie Dateien noch weiter filtern, indem Sie in einer anderen Spalte dasselbe tun usw.
Hier ist ein Screenshot der Dateifilter.
Ich möchte diese Funktion auch in anderen Ordneransichten verwenden können, beispielsweise in der Miniaturansicht. Ich bin mir nicht sicher, was der richtige Ansatz dafür ist. Ich dachte, es könnte vielleicht eine Verknüpfung für diese Menüs geben oder vielleicht eine Registrierungsoptimierung, um die Überschrift der Detailspalte immer in allen Ansichten anzuzeigen, aber ich habe keine Ahnung, wie das geht.
Nach dem Filtern in der Detailansicht kann ich dann die Ordneransicht auf etwas anderes ändern und die Filter bleiben intakt, so dass estutfunktioniert in anderen Ansichten, aber ich muss jedes Mal, wenn ich einen Filter verwenden möchte, in den Detailmodus wechseln und dann wieder zurück zu den Miniaturansichten, daher möchte ich diesen Schritt überspringen
Antwort1
Hinweis: Folgendes funktioniert auf meinem Laptop:
Edition Windows 10 Home
Version 22H2
Installiert am 10.08.2020
OS-Build 19045.2486
Erfahrung Windows Feature Experience Pack 120.2212.4190.0
Nicht mehr unterstützte Funktionen können sich jederzeit ändern. Ich habe mich noch nicht auf Windows 11 gestürzt, habe also diesbezüglich keine Ahnung.
Ein Bestandteil vonForscherAnsichtseinstellungen ist eine Reihe von Flags,OrdnerFlags. das Flag, das normalerweise die Anzeige von Spaltenüberschriften unterdrückt, ist:
FWF_NOHEADERINALLVIEWS
Wert: 0x01000000
Windows Vista und höher. Die Spaltenüberschrift wird nur im Detailansichtsmodus angezeigt.
Aber auch wenn das Flag in der Dateivorlage gelöscht ist,Forscherüberschreibt es bei der Anzeige des Ordners, und Kopfzeilen werden nur in Details
der Ansicht angezeigt. Aber inPower Shellkann die Markierung gelöscht werden füraktiv ForscherFenster und die Überschriften werden angezeigt:
DasPower ShellCode aktiviert die Spaltenüberschriften in allenForscherFenster, die beim Ausführen des Befehls geöffnet sind:
@((New-Object -Com shell.application).Windows()).ForEach({
$_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff)
$_.Refresh()
})
Der obige Code kann kopiert, eingefügt werden in einePower ShellKonsolenfenster und wurde für einen schnellen Test seiner Durchführbarkeit ausgeführt; aber das ist keine gute Art, es für den täglichen Gebrauch auszuführen. Es schien mir, als würde man einen Kontextmenüeintrag für dasVerzeichnishintergrundMenü machte am meisten Sinn. Dafür brauchen wir eine Kommandozeilenversion des Codes.
Run
Eine für den Dialog bzw. als Ziel einer Tastenkombination geeignete (und damit auch als Kontextmenübefehl geeignete) Befehlszeile wäre:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command '& {@((New-Object -Com shell.application).Windows()).ForEach({$_.Document.FolderFlags = ($_.Document.FolderFlags -band 0xfeffffff');$_.Refresh()})}'
Aber es gibt den ärgerlichen kurzen Blitz des blauenPower Shellcosole, wenn der Befehl ausgeführt wird. Um das zu umgehen, verwenden wir cmd.exe
zum StartenPower Shellminimiert. StartenPower ShellBefehle von cmd.exe
stellen Probleme mit Sonderzeichen und Anführungszeichen dar, die oft mit Referenzen .bat
oder .ps1
Dateien gelöst werden, aber wir können unseren Registrierungsbefehl in sich geschlossen halten, indem wir den -EncodedCommand
PowerShell-Parameter mit einer Base64-codierten Version des Befehls verwenden. Der folgende Code kann als Block kopiert, in einePower ShellCosole und ausgeführt, um den Kontextmenüeintrag zu erstellen:
$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
Wenn Sie möchten, können Sie den Menüeintrag auch durch Zusammenführen einer .reg
Datei erstellen. Hier ist ein Export der Registrierungsschlüssel, die durch den obigen Code erstellt wurden. Speichern Sie sie als .reg
Datei und führen Sie sie dann zusammen, um den Kontextmenüeintrag zu erstellen:
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=="
Nachdem Sie eine der beiden oben genannten Methoden zum Erstellen der Registrierungsschlüssel verwendet haben, sollten Sie oben im Kontextmenü desForscherFenster:
Nach der Ausführung:
Genauso wieForscherVorlageneinstellungen überschrieben, die Überschriften verschwinden sogar beim Navigieren zu einem Unterordner des aktuellen Ordners. Ich kenne keine Möglichkeit, das zu umgehen – Sie müssen den Befehl einfach erneut ausführen.