Beim Erweitern des Windows-Shell-Kontextmenüs (z. B. zum Hinzufügen einer Eingabeaufforderung zum Öffnen von Verzeichnissen) muss ein Befehlsschlüssel in der Registrierung erstellt werden.
Der Wert dieser 'Befehls'-Taste kann anscheinend eine beliebige gültige Befehlszeile sein.
Ich möchte wissen, welche speziellen Variablen in dieser Befehlszeile verwendet werden können.
Ich verwende beispielsweise den folgenden Befehl zum Öffnen eines Cmd-Fensters aus dem Kontextmenü eines Verzeichnisses (*):
cmd.exe /e:on /f:on /s /k pushd "%V"
Ich kann keinen Hinweis darauf finden, was %V
eigentlich bedeutet oder wie die vollständige Liste solcher Variablen aussieht.
(*) Folgende Registrierungsschlüssel werden dafür erstellt:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell]
@=Open Command Prompt Here"
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell\cmdshell\command]
@="cmd.exe /e:on /f:on /s /k pushd \"%V\""
%W
: Sie ist nicht immer verfügbar und gibt eine kryptische Fehlermeldung aus, wenn sie in Ihremcommand
Wert verwendet wird. Wenn Sie beispielsweise Ihr Kontextmenüelement im Kontextmenü eines Laufwerks oder eines Bibliotheksordners aufrufen, wird diese Variable nicht initialisiert. Vermeiden Sie die Verwendung außerhalb des Kontextmenüeintrags eines Datei-Handlers.%~
? Ich bekomme nur einen Fehler.%V
sollte verwendet werden, wenn Sie Verzeichnisnamen möchten, dh. wenn Sie Ihren Befehl im Kontextmenü hinzufügen möchten, wenn Sie auf den Hintergrund klicken, nicht auf eine einzelne Datei oder einen Verzeichnisnamen.%L
wird in diesem Fall nicht funktionieren.Diese Frage hat mich fasziniert, also habe ich experimentiert. Ich habe einen Ordner
C:\iso
. Was ich gefunden habe, als ich mit der rechten Maustaste geklickt habe:I
gab bei jedem Versuch einen anderen Satz von Zahlen zurück.H
war immer 0 undS
war immer 1D
,L
undV
waren alle Zielordner.W
war das übergeordnete Element des Zielordners. Möchte jemand dies erweitern?Zu Ihrer Information: Ich habe die folgenden Registrierungseinträge zum Testen verwendet:
(Die `Zeichen wurden als Trennzeichen verwendet)
quelle
Hier ist die Argumente / Syntax für cmd.exe
/k
führt den durch die folgende Zeichenfolge angegebenen Befehl aus, damit er den Befehl ausführt.pushd %V
Da das einzige Argument, das pushd akzeptiert, ein Pfad ist, folgt daraus, dass%V
eine vom Explorer bereitgestellte Variable den Pfad des Ordners enthält, auf den mit der rechten Maustaste geklickt wurde.quelle
Es ist in der Tat schwer zu finden, was% V bedeutet, oder eine Liste dieser Variablen. Durch Google habe ich herausgefunden, dass es anscheinend auch% L gibt. Ich glaube nicht, dass Sie mehr als% V oder% L an eine Eingabeaufforderung übergeben müssen, da es meiner Meinung nach keine weiteren nützlichen Informationen gibt. Wobei% V der Verzeichnisname sein könnte,% L könnte ein Speicherort für eine Datei sein. Im Zweifelsfall kann ein Echo helfen ...
quelle