Schnellzugriff - Defaulteinträge per Batch entfernen?
Hallo zusammen,
Im Windows Explorer werden auf der linken Seite per Default 4 Elemente unter "Schnellzugriff" angezeigt:
- Desktop
- Downloads
- Dokumente
- Bilder
Zusätzlich hinzugefügte Elemente landen ja als *.automaticDestinations-ms Datei unter
%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations
Die zusätzlichen loszuwerden ist ja kein Problem, aber...
Kennt jemand eine Lösung, wie man die 4 Defaulteinträge per Batch Datei (.cmd | .bat) entfernen kann?
Sie einzeln per Kontextmenü "Von Schnellzugriff lösen" ist hier keine sinnvolle Alternative...
Der Schnellzugriff soll auch nicht per Registryeintrag deaktiviert werden, es geht rein um eine automatisierte
Entfernung der Defaulteinträge.
Danke und Gruß,
Highend
Im Windows Explorer werden auf der linken Seite per Default 4 Elemente unter "Schnellzugriff" angezeigt:
- Desktop
- Downloads
- Dokumente
- Bilder
Zusätzlich hinzugefügte Elemente landen ja als *.automaticDestinations-ms Datei unter
%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations
Die zusätzlichen loszuwerden ist ja kein Problem, aber...
Kennt jemand eine Lösung, wie man die 4 Defaulteinträge per Batch Datei (.cmd | .bat) entfernen kann?
Sie einzeln per Kontextmenü "Von Schnellzugriff lösen" ist hier keine sinnvolle Alternative...
Der Schnellzugriff soll auch nicht per Registryeintrag deaktiviert werden, es geht rein um eine automatisierte
Entfernung der Defaulteinträge.
Danke und Gruß,
Highend
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 294909
Url: https://administrator.de/contentid/294909
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
17 Kommentare
Neuester Kommentar
Hallo Highend,
machst du mit ein bisschen Hilfe der Powershell in einer Batch:
Hinweis: Der Befehl ist für die Verwendung innerhalb einer Batch vorgesehen, wenn testweise er direkt in der CMD ausgeführt werden soll, muss das doppelte Prozentzeichen der Foreach-Schleife am Ende durch ein einfaches ersetzt werden.
Die pure Powershell-Version sieht so aus
Der Einzeiler ist für ein deutsches oder englisches System. Für andere Sprachen muss der Regex-String per Pipe-Symbol und dem entsprechenden String zum lösen des Schnellzugriffeintrags ergänzt werden.
Grüße Uwe
machst du mit ein bisschen Hilfe der Powershell in einer Batch:
powershell -Executionpolicy ByPass -Command "(New-Object -Com Shell.Application).NameSpace('shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}').Items() | %%{$_.Verbs()} | ?{$_.Name.replace('&','') -match 'Von Schnellzugriff l.sen|(Remove|Unpin) from Quick access'} | %%{$_.DoIt()}"
Die pure Powershell-Version sieht so aus
(New-Object -Com Shell.Application).NameSpace('shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}').Items() | %{$_.Verbs()} | ?{$_.Name.replace('&','') -match 'Von Schnellzugriff lösen|(Remove|Unpin) from Quick access'} | %{$_.DoIt()}
Der Einzeiler ist für ein deutsches oder englisches System. Für andere Sprachen muss der Regex-String per Pipe-Symbol und dem entsprechenden String zum lösen des Schnellzugriffeintrags ergänzt werden.
Grüße Uwe
Gerne
Grüße Uwe
Ich hab meine Batchdatei noch ein bisschen angepasst (da mit normaler 850er Codepage das "ö" in "Von Schnellzugriff lösen" Probleme machte) und jetzt klappt das Ganze hervorragend!
uups ... tatsächlich vergessen, ist oben korrigiert.Grüße Uwe
Zitat von @Highend01:
Uwe, eine Sache noch (falls du noch Zeit dafür hast):
Klar, es gibt ja nun keine Einträge mehr zu entfernen. Trotzdem, könnte man den Fehler abfangen und ohne Fehlermeldung fortfahren?
Ja klar, kein Problem, nur eine kleine Änderung, war ja nur ein Schnellschuss , ist oben angepasst.Uwe, eine Sache noch (falls du noch Zeit dafür hast):
Klar, es gibt ja nun keine Einträge mehr zu entfernen. Trotzdem, könnte man den Fehler abfangen und ohne Fehlermeldung fortfahren?
Hallo Uwe,
der Beitrag ist schon etwas her, stehe derzeit aber auch vor der Frage wie ich die Einträge loswerde. Wenn ich alle entfernen möchte, dann funktioniert das mit deinem Script super. Wie müsste ich aber tun wenn ich den Desktop stehen lassen möchte. Kann ich die Werte auch einzeln ansprechen?
Danke für deine Hilfe.
Gruß Joni
der Beitrag ist schon etwas her, stehe derzeit aber auch vor der Frage wie ich die Einträge loswerde. Wenn ich alle entfernen möchte, dann funktioniert das mit deinem Script super. Wie müsste ich aber tun wenn ich den Desktop stehen lassen möchte. Kann ich die Werte auch einzeln ansprechen?
Danke für deine Hilfe.
Gruß Joni
Servus Joni.
Hier für die Verwendung in einer Batchdatei:
Das ? Name -notin 'Desktop' kannst du auch um mehrere Elemente erweitern indem du diese als Array schreibst
Alle Elemente im Array werden dann ignoriert, da der Operator -notin Verwendet wird.
Willst du dagegen nur bestimmte Elemente entfernen drehst du das ganze um und schreibst es so
Grüße Uwe
Zitat von @joni2000de:
Wenn ich alle entfernen möchte, dann funktioniert das mit deinem Script super. Wie müsste ich aber tun wenn ich den Desktop stehen lassen möchte. Kann ich die Werte auch einzeln ansprechen?
Ja, das ist kein Problem, du kannst die Einträge einfach mit einem Where-Objekt ausfilternWenn ich alle entfernen möchte, dann funktioniert das mit deinem Script super. Wie müsste ich aber tun wenn ich den Desktop stehen lassen möchte. Kann ich die Werte auch einzeln ansprechen?
Hier für die Verwendung in einer Batchdatei:
@echo off
powershell -Executionpolicy ByPass -Command "(New-Object -Com Shell.Application).NameSpace('shell:::{679f85cb-0220-4080-b29b-5540cc05aab6}').Items() | ? Name -notin 'Desktop' | %%{$_.Verbs()} | ?{$_.Name.replace('&','') -match 'Von Schnellzugriff l.sen|(Remove|Unpin) from Quick access'} | %%{$_.DoIt()}"
Das ? Name -notin 'Desktop' kannst du auch um mehrere Elemente erweitern indem du diese als Array schreibst
? Name -notin 'Desktop','Anderer Name','Noch ein Name'
Alle Elemente im Array werden dann ignoriert, da der Operator -notin Verwendet wird.
Willst du dagegen nur bestimmte Elemente entfernen drehst du das ganze um und schreibst es so
? Name -in 'Desktop','Anderer Name','Noch ein Name'
Grüße Uwe
Hallo Uwe,
du bist super. So schnell geholfen, echt perfekt.
Da ich jetzt schon den kleinen Finger habe, vielleicht gibst du mir auch noch die ganze Hand .
Ich würde jetzt nicht nur die ungebrauchten Einträge gerne entfernen sondern auch noch spezifische Einträge hinzufügen. Der Pfad ist aber pro User unterschiedlich so in der Art P:\Scanordner\Username.
Geht das auch?
Nochmal danke für deine Hilfe!
Gruß Joni
du bist super. So schnell geholfen, echt perfekt.
Da ich jetzt schon den kleinen Finger habe, vielleicht gibst du mir auch noch die ganze Hand .
Ich würde jetzt nicht nur die ungebrauchten Einträge gerne entfernen sondern auch noch spezifische Einträge hinzufügen. Der Pfad ist aber pro User unterschiedlich so in der Art P:\Scanordner\Username.
Geht das auch?
Nochmal danke für deine Hilfe!
Gruß Joni
Der Pfad ist aber pro User unterschiedlich so in der Art P:\Scanordner\Username.
Auch das ist kein Hexenwerk, für das "Username" in deinem Pfad habe ich jetzt mal den aktuellen angemeldeten Usernamen als Variable eingesetzt.@echo off
powershell -Executionpolicy ByPass -Command "(New-Object -Com Shell.Application).NameSpace('P:\Scanordner').ParseName($env:Username).Verbs() | ?{$_.Name -match 'An Schnellzugriff anheften|Pin to Quick Access'} | %%{$_.Doit()}"
Servus Thomas.
Grüße Uwe
Zitat von @TomFire:
Kannst du mir auch noch erklären wie ich einen speziellen Ordner c:\XY\AB\Wunschordner an den Schnellzugriff anheften kann?
Schau in den Kommentar über deinem, schon weist du wie .Kannst du mir auch noch erklären wie ich einen speziellen Ordner c:\XY\AB\Wunschordner an den Schnellzugriff anheften kann?
@echo off
set "folder=c:\XY\AB\Wunschordner"
powershell -Executionpolicy ByPass -Command "$f = gi '%folder%';(New-Object -Com Shell.Application).NameSpace($f.Parent.Fullname).ParseName($f.Name).Verbs() | ?{$_.Name -match 'An Schnellzugriff anheften|Pin to Quick Access'} | %%{$_.Doit()}"
Grüße Uwe
Zitat von @TomFire:
gibt es auch eine Einzeiler Variante in der ich mehrere Ordner anheften kann?
set "folder1=..."
set "folder2=..."
gibt es auch eine Einzeiler Variante in der ich mehrere Ordner anheften kann?
set "folder1=..."
set "folder2=..."
@echo off
powershell -Executionpolicy ByPass -Command "Get-Item -Path 'c:\ordner1','c:\ordner2' | %%{(New-Object -Com Shell.Application).NameSpace($_.Parent.Fullname).ParseName($_.Name).Verbs() | ?{$_.Name -match 'An Schnellzugriff anheften|Pin to Quick Access'} | %%{$_.Doit()}}"