Kontextmenü-Eintrag für Verknüpfungen und passender Befehl
Hallo Administratoren-Freunde,
der Titel ist auch schon meine eigentliche Frage.
Konkreter: Ich möchte einen Kontextmenü-Eintrag erstellen, welcher aber nur bei Verknüpfungen zu sehen ist. Der Kontextmenü-Eintrag soll dann den der Verknüpfung übergeordneten Ordner öffnen. Aber bevor ich den Kontextmenü-Eintrag erstellen kann, muss ich ja wissen wo ich die Änderungen in der Registry vornehmen muss.
Den folgenden Artikel habe ich mir ergoogelt:
http://support.microsoft.com/kb/509254/#top
Aber ich bin auch noch am Rätseln welchen Befehl ich bei Standard dann hinschreibe. Meine ersten Überlegungen waren diese hier:
cd %1 & cd ..
MfG Karsten
der Titel ist auch schon meine eigentliche Frage.
Konkreter: Ich möchte einen Kontextmenü-Eintrag erstellen, welcher aber nur bei Verknüpfungen zu sehen ist. Der Kontextmenü-Eintrag soll dann den der Verknüpfung übergeordneten Ordner öffnen. Aber bevor ich den Kontextmenü-Eintrag erstellen kann, muss ich ja wissen wo ich die Änderungen in der Registry vornehmen muss.
Den folgenden Artikel habe ich mir ergoogelt:
http://support.microsoft.com/kb/509254/#top
Aber ich bin auch noch am Rätseln welchen Befehl ich bei Standard dann hinschreibe. Meine ersten Überlegungen waren diese hier:
cd %1 & cd ..
MfG Karsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148065
Url: https://administrator.de/forum/kontextmenue-eintrag-fuer-verknuepfungen-und-passender-befehl-148065.html
Ausgedruckt am: 09.01.2025 um 00:01 Uhr
17 Kommentare
Neuester Kommentar
Hallo Karsten,
da du mit dem Kommando cd operierst, vermute ich du willst den übergeordneten Ordner in der Console öffnen.
Hier eine Möglichkeit:
Die Zeilen in eine reg.Datei stecken und doppelklicken
cu paulepank
da du mit dem Kommando cd operierst, vermute ich du willst den übergeordneten Ordner in der Console öffnen.
Hier eine Möglichkeit:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\lnkfile\shell]
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber]
@="Übergeordneter Ordner"
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber\command]
@="cmd /k \"cd ..\""
cu paulepank
Hallo Karsten,
das Vorgehen, was paulepank schildert, ist das Standardvorgehen bei normalen Dateierweiterungen, z.B. .txt oder auch * für alle Dateien. Der Code ist der Inhalt einer .reg-Datei, den Du durch Doppelklick in die Registry importieren musst.
Ich hatte zuerst die selbe Idee und habe das eben unter Windows XP Professional SP3 getestet. Es hat nicht funktioniert. Aber probiere es ruhig mal selbst aus. Falls es klappt, würde ich Zeile 9 folgendermaßen ändern, dann geht ein Explorerfenster mit dem übergeordneten Verzeichnis auf:
Als Alternative gibt es die Windows 95 Powertoys (Download: http://download.microsoft.com/download/5/2/e/52e8fd68-e528-4995-abe2-56 ... ). ACHTUNG: Die kann man nur bis Windows XP verwenden!! In Windows 7 ist aber im Kontextmenü von Verknüpfungen auf Verzeichnisse ein Punkt "Ordnerpfad öffnen" und im Kontextmenü von Verknüpfungen auf Dateien ein Punkt "Dateipfad öffnen" enthalten. Bei Vista weiß ich es nicht. Für Windows 7 brauchst Du also keinen zusätzlichen Kontextmenüeintrag.
In Windows 95 Powertoys ist ein Powertoy namens Shortcut Target Menu enthalten. Die Setupdatei W95powertoy.exe kannst Du mit dem Programm Universal Extractor entpacken (Link: http://www.legroom.net/software/uniextract ). Du erhälst dann u.a. die Dateien target.dll und target.inf. Zum Installieren des ganzen machst Du einen Rechtsklick auf target.inf und wählst Installieren aus dem Kontextmenü. Du erhälst dann im Kontextmenü von Verknüpfungen einen Eintrag Target, der ein Submenü mit mehreren Möglichkeiten öffnet, was Du mit der Verknüpfung machen kannst, u.a. den Ordner öffnen, auf den die Verknüpfung zeigt.
Falls Dich die englischen Einträge im Kontextmenü stören, musst Du die target.dll vor dem Installieren mit einem Hexeditor patchen.
Gruß
Friemler
das Vorgehen, was paulepank schildert, ist das Standardvorgehen bei normalen Dateierweiterungen, z.B. .txt oder auch * für alle Dateien. Der Code ist der Inhalt einer .reg-Datei, den Du durch Doppelklick in die Registry importieren musst.
Ich hatte zuerst die selbe Idee und habe das eben unter Windows XP Professional SP3 getestet. Es hat nicht funktioniert. Aber probiere es ruhig mal selbst aus. Falls es klappt, würde ich Zeile 9 folgendermaßen ändern, dann geht ein Explorerfenster mit dem übergeordneten Verzeichnis auf:
@="explorer \"%~dp1\..\""
Als Alternative gibt es die Windows 95 Powertoys (Download: http://download.microsoft.com/download/5/2/e/52e8fd68-e528-4995-abe2-56 ... ). ACHTUNG: Die kann man nur bis Windows XP verwenden!! In Windows 7 ist aber im Kontextmenü von Verknüpfungen auf Verzeichnisse ein Punkt "Ordnerpfad öffnen" und im Kontextmenü von Verknüpfungen auf Dateien ein Punkt "Dateipfad öffnen" enthalten. Bei Vista weiß ich es nicht. Für Windows 7 brauchst Du also keinen zusätzlichen Kontextmenüeintrag.
In Windows 95 Powertoys ist ein Powertoy namens Shortcut Target Menu enthalten. Die Setupdatei W95powertoy.exe kannst Du mit dem Programm Universal Extractor entpacken (Link: http://www.legroom.net/software/uniextract ). Du erhälst dann u.a. die Dateien target.dll und target.inf. Zum Installieren des ganzen machst Du einen Rechtsklick auf target.inf und wählst Installieren aus dem Kontextmenü. Du erhälst dann im Kontextmenü von Verknüpfungen einen Eintrag Target, der ein Submenü mit mehreren Möglichkeiten öffnet, was Du mit der Verknüpfung machen kannst, u.a. den Ordner öffnen, auf den die Verknüpfung zeigt.
Falls Dich die englischen Einträge im Kontextmenü stören, musst Du die target.dll vor dem Installieren mit einem Hexeditor patchen.
Gruß
Friemler
Hallo Karsten,
der Vorschlag von paulepank funktioniert auch mit meiner Änderung
nicht. Hab's nochmal getestet. Durch %~dp1 wird Laufwerk und Pfad der Verknüpfung ermittelt und der Explorer mit dem Parameter "%~dp1\.." gestartet. Du erhälst dann immer das Verzeichnis, in dem sich die Verknüpfung befindet.
Verstehst Du den Vorschlag mit den Windows 95 Powertoys nicht oder die Änderung an paulepank's Code? Da ich immer noch nicht weiß, welches OS Du verwendest (Windows 95 Powertoys sind nur bis Windows XP verwendbar), weiß ich auch nicht, ob das für dich überhaupt praktikabel ist.
Falls Du die Windows 95 Powertoys verwenden möchtest, gibt es da eine Lösung, einfach nochmal melden.
Gruß
Friemler
der Vorschlag von paulepank funktioniert auch mit meiner Änderung
@="explorer \"%~dp1\..\""
nicht. Hab's nochmal getestet. Durch %~dp1 wird Laufwerk und Pfad der Verknüpfung ermittelt und der Explorer mit dem Parameter "%~dp1\.." gestartet. Du erhälst dann immer das Verzeichnis, in dem sich die Verknüpfung befindet.
Zitat von @kkboy94:
Eigentlich verstehe ich deinen ganzen Vorschlag nicht, bzw. ich weiß nicht warum das überhaupt so funktioniert.
Könntest du mich da noch aufklären?
Eigentlich verstehe ich deinen ganzen Vorschlag nicht, bzw. ich weiß nicht warum das überhaupt so funktioniert.
Könntest du mich da noch aufklären?
Verstehst Du den Vorschlag mit den Windows 95 Powertoys nicht oder die Änderung an paulepank's Code? Da ich immer noch nicht weiß, welches OS Du verwendest (Windows 95 Powertoys sind nur bis Windows XP verwendbar), weiß ich auch nicht, ob das für dich überhaupt praktikabel ist.
:EDIT: Ich wollte nachher alles in eine Reg- oder Bat-Datei stecken, damit ich das auch auf anderen Rechnern benutzen kann, und
die Leute vielleicht kein zusätzliches Programm installieren wollen.
die Leute vielleicht kein zusätzliches Programm installieren wollen.
Falls Du die Windows 95 Powertoys verwenden möchtest, gibt es da eine Lösung, einfach nochmal melden.
Gruß
Friemler
@Friemler
Wie sieht's aus, wenn Du beim "Escapen" von Sonderzeichen so richtig großzügig bist - also etwa:
- wobei: Braucht es überhaupt nach "
Grüße
bastla
Wie sieht's aus, wenn Du beim "Escapen" von Sonderzeichen so richtig großzügig bist - also etwa:
@="explorer \/e\,\"%~dp1\\..\""
%~dp1
" auch noch ein "..
"?Grüße
bastla
Hallo Karsten,
zunächst mal Entschuldigung. Das mit dem "%~dp1\.." klappt garnicht. Heute ist nicht mein Tag . Wenn es so funktioniert hätte, wie ich dachte, wäre das Ergebnis trotzdem nicht das gewesen, was Du willst. Es hätte sich der Ordner geöffnet, in dem der Ordner liegt, wo die Verknüpfung gespeichert ist. "%~dp1" klappt auch nicht, da der Explorer die Datei "%~dp1" nicht finden kann. Du willst aber doch den Ordner öffnen, in dem das Ziel der Verknüpfung liegt, oder doch nicht?
Wenn es Dich überhaupt noch interessiert, wie ich darauf komme, mach' folgendes:
Start->Ausführen->cmd eingeben und [ENTER]->for /? eingeben und [ENTER]. Dann erscheint die erste Seite der Hilfe zum FOR-Befehl. Wenn Du 5 mal ENTER drückst, kommt ein Abschnitt "Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert. Sie können jetzt folgende Syntax verwenden:". Diese Hinweise gelten auch für die Parameter von Batchfiles %1, %2, ... %9. Die haben aber nichts mit %1, %2, usw. zu tun, die man in Kontextmenü-Einträgen als Parameter für das aufzurufende Programm verwenden kann.
Das Problem ist, das der Ordner, in dem das Objekt liegt, auf das die Verknüpfung zeigt, in der Verknüpfung abgespeichert ist. D.h. er muss erstmal ausgelesen werden. Das kann nur mit einem Zusatzprogramm bewerkstelligt werden.
Gruß
Friemler
zunächst mal Entschuldigung. Das mit dem "%~dp1\.." klappt garnicht. Heute ist nicht mein Tag . Wenn es so funktioniert hätte, wie ich dachte, wäre das Ergebnis trotzdem nicht das gewesen, was Du willst. Es hätte sich der Ordner geöffnet, in dem der Ordner liegt, wo die Verknüpfung gespeichert ist. "%~dp1" klappt auch nicht, da der Explorer die Datei "%~dp1" nicht finden kann. Du willst aber doch den Ordner öffnen, in dem das Ziel der Verknüpfung liegt, oder doch nicht?
Wenn es Dich überhaupt noch interessiert, wie ich darauf komme, mach' folgendes:
Start->Ausführen->cmd eingeben und [ENTER]->for /? eingeben und [ENTER]. Dann erscheint die erste Seite der Hilfe zum FOR-Befehl. Wenn Du 5 mal ENTER drückst, kommt ein Abschnitt "Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert. Sie können jetzt folgende Syntax verwenden:". Diese Hinweise gelten auch für die Parameter von Batchfiles %1, %2, ... %9. Die haben aber nichts mit %1, %2, usw. zu tun, die man in Kontextmenü-Einträgen als Parameter für das aufzurufende Programm verwenden kann.
Das Problem ist, das der Ordner, in dem das Objekt liegt, auf das die Verknüpfung zeigt, in der Verknüpfung abgespeichert ist. D.h. er muss erstmal ausgelesen werden. Das kann nur mit einem Zusatzprogramm bewerkstelligt werden.
Gruß
Friemler
@Friemler
Wenn's auch für den hier angestrebten Zweck etwas unhandlich ist - das Auslesen des Verknüpfungszieles lässt sich auch mit Bordmittlen realisieren - Beispiel:
Grüße
bastla
Wenn's auch für den hier angestrebten Zweck etwas unhandlich ist - das Auslesen des Verknüpfungszieles lässt sich auch mit Bordmittlen realisieren - Beispiel:
@echo off & setlocal
set "Shortcut=%allusersprofile%\Desktop\Adobe Reader 9.lnk"
set R=%temp%\ReadTargetFromShortcut.vbs
>%R% echo WScript.Echo WScript.CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).TargetPath
for /f "delims=" %%i in ('cscript //nologo %R% "%Shortcut%"') do set "Target=%%i"
echo %Target%
bastla
Hallo zusammen,
wenn schon VBS eine Lösung darstellt, warum dann nicht gleich VBS nutzen?!
Zusammenfassend etwa so:
C:\link.vbs
link.reg
Nachdem link.vbs unter C: gespeichert worden ist und link.reg ausgeführt ist, die Exploreransicht einmal aktualisieren und schon kann's losgehen.
Grüße
rubberman
wenn schon VBS eine Lösung darstellt, warum dann nicht gleich VBS nutzen?!
Zusammenfassend etwa so:
C:\link.vbs
Set oSh=WScript.CreateObject("WScript.Shell")
LNKfullname=oSh.CreateShortcut(WScript.Arguments(0)).TargetPath
LNKpath=WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(LNKfullname)
oSh.Run "explorer.exe """ & LNKpath & """"
link.reg
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\lnkfile\shell]
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber]
@="Übergeordneter Ordner"
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber\command]
@="c:\\windows\\system32\\wscript.exe c:\\link.vbs \"%1\""
Nachdem link.vbs unter C: gespeichert worden ist und link.reg ausgeführt ist, die Exploreransicht einmal aktualisieren und schon kann's losgehen.
Grüße
rubberman
Hallo Karsten.
Mit Speicherort ist der Pfad zur VBS Datei gemeint.
Eine der Optionen des Explorers hat bastla schon vorgestellt.
Mit Windowstate meinte ich den Windowstyle, den du bei der Run Methode festlegen kannst (maximiert öffnen etc.)
Alles in eine Datei packen? Joa, wir sind ja hier bei Batch & Shell.
register.bat
Naja, die VBS Datei lässt sich letztlich nicht wegkürzen.
Grüße
rubberman
Mit Speicherort ist der Pfad zur VBS Datei gemeint.
Eine der Optionen des Explorers hat bastla schon vorgestellt.
Mit Windowstate meinte ich den Windowstyle, den du bei der Run Methode festlegen kannst (maximiert öffnen etc.)
Alles in eine Datei packen? Joa, wir sind ja hier bei Batch & Shell.
register.bat
@echo off &setlocal
:: hier kannst du anpassen
set "vbsFullName=%SystemRoot%\link.vbs"
(
echo Set oSh=WScript.CreateObject^("WScript.Shell"^)
echo LNKfullname=oSh.CreateShortcut^(WScript.Arguments^(0^)^).TargetPath
echo LNKpath=WScript.CreateObject^("Scripting.FileSystemObject"^).GetParentFolderName^(LNKfullname^)
echo oSh.Run "explorer.exe """ ^& LNKpath ^& """"
)>"%vbsFullName%"
chcp 1252>nul
reg add "HKCR\lnkfile\shell\ueber" /ve /d "Übergeordneter Ordner" /f
reg add "HKCR\lnkfile\shell\ueber\command" /t REG_EXPAND_SZ /ve /d "%%SystemRoot%%\system32\wscript.exe \"%vbsFullName%\" \"%%1\"" /f
Naja, die VBS Datei lässt sich letztlich nicht wegkürzen.
Grüße
rubberman