Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Kontextmenü-Eintrag für Verknüpfungen und passender Befehl

Frage Entwicklung Batch & Shell

Mitglied: kkboy94

kkboy94 (Level 1) - Jetzt verbinden

01.08.2010 um 13:39 Uhr, 7474 Aufrufe, 17 Kommentare

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 ..


Mit freundlichen Grüßen Karsten
Mitglied: paulepank
01.08.2010 um 15:02 Uhr
Hallo Karsten,

da du mit dem Kommando cd operierst, vermute ich du willst den übergeordneten Ordner in der Console öffnen.
Hier eine Möglichkeit:
01.
Windows Registry Editor Version 5.00 
02.
 
03.
[HKEY_CLASSES_ROOT\lnkfile\shell] 
04.
 
05.
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber] 
06.
@="Übergeordneter Ordner" 
07.
 
08.
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber\command] 
09.
@="cmd /k \"cd ..\"" 
10.
 
Die Zeilen in eine reg.Datei stecken und doppelklicken
cu paulepank
Bitte warten ..
Mitglied: kkboy94
01.08.2010 um 15:36 Uhr
Erst einmal Danke.

Und jetzt die Fragen/An-/Bemerkungen:
Was bedeutet das "@"?
Und:
Ich möchte eigentlich den übergeordeten Ordner im Explorer öffnen.
Bitte warten ..
Mitglied: Friemler
01.08.2010 um 15:40 Uhr
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:

01.
@="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
Bitte warten ..
Mitglied: kkboy94
01.08.2010 um 15:53 Uhr
Also... als erstes ein dank auch für deinen Vorschlag
paulepanks Methode hat nicht funktioniert (Es öffnete sich lediglich das CMD-Prompt).
Mit deiner Alternative/Ergänzung, welche ich auch einfach mal probiert habe, öffnete sich immer die Festplatte "C:".
Aber noch eine Frage zu deinem Vorschlag:
Eigentlich verstehe ich deinen ganzen Vorschlag nicht, bzw. ich weiß nicht warum das überhaupt so funktioniert. Könntest du mich da noch aufklären?


Mit freundlichen Grüßen Karsten

: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.
Bitte warten ..
Mitglied: Friemler
01.08.2010 um 16:18 Uhr
Hallo Karsten,

der Vorschlag von paulepank funktioniert auch mit meiner Änderung

01.
@="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?

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.

Falls Du die Windows 95 Powertoys verwenden möchtest, gibt es da eine Lösung, einfach nochmal melden.

Gruß
Friemler
Bitte warten ..
Mitglied: kkboy94
01.08.2010 um 16:27 Uhr
Okay Sorry hab ich wohl verpennt. Ich benutze
"WINDOWS XP SP3"
Ich habe mich leicht unverständlich ausgedrückt, das sehe ich ein ;). Aber ich meinte, ich wollte die Powertoys NICHT benutzen.

Den Powertoy Vorschlag habe ich verstanden, aber ich hatte deine Änderung nicht verstanden. Und aus reinem Interesse frage ich mal, ob ich den Teil mit dem "%~dp1" auch irgendwo nachlesen kann?


Mit freundlichen Grüßen Karsten
Bitte warten ..
Mitglied: bastla
01.08.2010 um 16:39 Uhr
@Friemler
Wie sieht's aus, wenn Du beim "Escapen" von Sonderzeichen so richtig großzügig bist - also etwa:
@="explorer \/e\,\"%~dp1\\..\""
- wobei: Braucht es überhaupt nach "%~dp1" auch noch ein ".."?

Grüße
bastla
Bitte warten ..
Mitglied: kkboy94
01.08.2010 um 16:56 Uhr
Was heißt "Escapen"?
Bitte warten ..
Mitglied: Friemler
01.08.2010 um 19:39 Uhr
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.

Zitat von kkboy94:
... und die Leute vielleicht kein zusätzliches Programm installieren wollen.

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
Bitte warten ..
Mitglied: bastla
01.08.2010 um 19:58 Uhr
@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:
01.
@echo off & setlocal 
02.
set "Shortcut=%allusersprofile%\Desktop\Adobe Reader 9.lnk" 
03.
 
04.
set R=%temp%\ReadTargetFromShortcut.vbs 
05.
>%R% echo WScript.Echo WScript.CreateObject("WScript.Shell").CreateShortcut(WScript.Arguments(0)).TargetPath 
06.
 
07.
for /f "delims=" %%i in ('cscript //nologo %R% "%Shortcut%"') do set "Target=%%i" 
08.
echo %Target%
Grüße
bastla
Bitte warten ..
Mitglied: Friemler
01.08.2010 um 20:24 Uhr
Hallo bastla,

wieder was gelernt. Danke.

Gruß
Friemler
Bitte warten ..
Mitglied: rubberman
01.08.2010 um 21:58 Uhr
Hallo zusammen,

wenn schon VBS eine Lösung darstellt, warum dann nicht gleich VBS nutzen?!

Zusammenfassend etwa so:
C:\link.vbs
01.
Set oSh=WScript.CreateObject("WScript.Shell") 
02.
LNKfullname=oSh.CreateShortcut(WScript.Arguments(0)).TargetPath 
03.
LNKpath=WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(LNKfullname) 
04.
oSh.Run "explorer.exe """ & LNKpath & """"
link.reg
01.
Windows Registry Editor Version 5.00 
02.
 
03.
[HKEY_CLASSES_ROOT\lnkfile\shell] 
04.
 
05.
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber] 
06.
@="Übergeordneter Ordner" 
07.
 
08.
[HKEY_CLASSES_ROOT\lnkfile\shell\ueber\command] 
09.
@="c:\\windows\\system32\\wscript.exe c:\\link.vbs \"%1\"" 
10.
 
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
Bitte warten ..
Mitglied: bastla
01.08.2010 um 22:15 Uhr
Hallo rubberman!

Hybsch

Den Speicherort würde ich allerdings anders wählen, und wenn's nicht nur ein "Arbeitsplatz-", sondern ein "Explorer-"Fenster sein soll, dann:
oSh.Run "explorer /e,""" & LNKpath & """"
Grüße
bastla
Bitte warten ..
Mitglied: rubberman
01.08.2010 um 22:40 Uhr
Hallo bastla,

natürlich sind einige Anpassungen möglich, von Speicherort, über Optionen bis Windowstate. War erst mal die simpelste Variante.

Grüße
rubberman
Bitte warten ..
Mitglied: kkboy94
03.08.2010 um 15:21 Uhr
Danke erstmal für alle eingegangenen Vorschläge/Lösungen. Ich entschuldige mich auch mal direkt dafür, dass ich in letzter Zeit zwar ab und zu online war, aber nich geantwortet habe. Ich war halt an einem anderen PC, wo ich nicht unbedingt in der Registry rumprobieren wollte...

Nun zum Thema:

Rubberman's Lösung reichte vollkommen aus. Funktioniernt super.. Danke dafür.
@ Bastla: Deine änderung habe ich auch mal ausprobiert, aber ich bezeichne diese Ansichten halt immer als explorer-Fenster, da sie von der explorer.exe gesteuert sind, doer nicht?

Und nochmal zu rubberman: Was meinst du für Optionen, bzw mit "Speicherort, über Optionen bis Windowstaste"?

Und noch weiter Fragen:
1. Kann man alles mit nur EINER Datei bewerkstelligen? Und wenn NEIN dann die zweite Frage:
Ist es möglich den Pfad/Command varaibel zu gestalten, so dass man die "link.vbs" in einen beliebigen Ordner tun kann?

:EDIT: Mit einer Datei meine ich nur die Reg-Datei :/Edit:


Mit freundlichen Grüßen Karsten
Bitte warten ..
Mitglied: rubberman
03.08.2010 um 19:15 Uhr
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
01.
@echo off &setlocal 
02.
:: hier kannst du anpassen 
03.
set "vbsFullName=%SystemRoot%\link.vbs" 
04.
 
05.
06.
echo Set oSh=WScript.CreateObject^("WScript.Shell"^) 
07.
echo LNKfullname=oSh.CreateShortcut^(WScript.Arguments^(0^)^).TargetPath 
08.
echo LNKpath=WScript.CreateObject^("Scripting.FileSystemObject"^).GetParentFolderName^(LNKfullname^) 
09.
echo oSh.Run "explorer.exe """ ^& LNKpath ^& """" 
10.
)>"%vbsFullName%" 
11.
 
12.
chcp 1252>nul 
13.
reg add "HKCR\lnkfile\shell\ueber" /ve /d "Übergeordneter Ordner" /f 
14.
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
Bitte warten ..
Mitglied: kkboy94
03.08.2010 um 20:37 Uhr
Danke, funktioniert Super.

Nächste Frage: Wie sähe denn eine batch aus, welche die dort angelegten Schlüssel wieder löscht?

Mit freundlichen Grüßen Karsten

:EDIT: Hat sich erledigt. Mit "reg delete" mach ich das ^^
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Internet Domänen
gelöst Domain Host Eintrag In Richtfunk Netz (7)

Frage von Betact zum Thema Internet Domänen ...

DNS
gelöst Kann wpad Eintrag nicht erstellen (3)

Frage von Ex0r2k16 zum Thema DNS ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...