Wie starte ich cmd.exe von einem UNC-Pfad aus (um ein Netzlaufwerk zuzuordnen)?

2014
Ehryk

Während cmd.exe mit UNC-Pfaden arbeiten kann PUSHD \\UNC\Path, versuche ich, cmd oder einen ähnlichen Befehl über einen UNC-Pfad zu starten. Hier ist der Grund:

Ich füge meiner Suite von Kontextmenü-Tools ein "Map Network Drive Here" hinzu, wie "Start Powershell Here" und "Open Command Prompt Here". Sie fügen der Windows-Registrierung Registrierungsschlüssel hinzu, und dies funktioniert hervorragend.

Als Beispiele wird hier eine Eingabeaufforderung geöffnet:

"cmd /s /k ""VER && TITLE Command Prompt: %1 && PUSHD ""%1"" "" " (Für Rechtsklick-Ordner, funktioniert für UNC-Pfade.)

"cmd /s /k ""VER && TITLE Command Prompt: %%%CD%%%"" " (Für Rechtsklick-Hintergründe von Verzeichnissen nicht für UNC-Pfade geeignet.)

Der Befehl wird als Registrierungsschlüssel DWORD eingegeben. Dies funktioniert, wenn Sie mit der rechten Maustaste auf einen Ordner klicken:

"net use * ""%1"" " (Für Rechtsklick-Ordner, funktioniert für UNC-Pfade.)

"net use * ""%%%CD%%%"" " (Für Rechtsklick-Hintergründe von Verzeichnissen nicht für UNC-Pfade geeignet.)

Ich vermute, %%%CD%%%wird durch cmd.exe erweitert, die nicht in einem UNC-Pfad gestartet wird.

Meine Frage ist; Wie kann ich den Pfad des Rechtsklick-"Hintergrunds eines Laufwerks oder Verzeichnisses" für UNC- und Windows-Pfade in einem Registrierungsschlüssel erweitern, um ihn an einen Befehl zu übergeben?

Diese werden in HKCR,Directory\Shell\xxx\commandund gehen HKCR,Directory\Background\Shell\xxx\command.

Dies ist ein Open Source-Projekt, verfügbar auf GitHub: https://github.com/Ehryk/ContextMenuTools

0

1 Antwort auf die Frage

1
Rik

Ich bin nicht sicher ... aber meintest du so etwas? (Sie müssen% V anstelle von% 1 verwenden.)

Windows Registry Editor Version 5.00  [HKEY_CLASSES_ROOT\Directory\Background\shell\cmd] @="Open cmd here" "NoWorkingDirectory"=""  [HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command] @="cmd /s /k \"VER && TITLE Command Prompt: \"%V\" && PUSHD \"%V\" \"" 

(Übrigens, dass NoWorkingDirectory dafür ist, dass Sie keine erste Fehlermeldung erhalten, wenn cmd mit einem UNC als Arbeitsverzeichnis geöffnet wird. Dies startet cmd ohne ein aktuelles Verzeichnis, nach dem Sie einen Pushd ausführen, um einen temporären Laufwerksbuchstaben zu erhalten.)

Bearbeiten: Da Sie in ein leeres Feld eines Verzeichnisses klicken, ist der Parameter% 1 nicht ausgefüllt (wie wenn Sie auf das Verzeichnis selbst klicken). Sie müssen also% V oder% W verwenden. Diese stehen für das Arbeitsverzeichnis, das der UNC-Pfad ist, wenn Sie mit der rechten Maustaste in ein leeres Feld eines Netzwerkverzeichnisses klicken.

Sehen Sie hier für eine vollständige Liste dieser Variablen.

Dies funktioniert bei 'Eingabeaufforderung hier', da das Laufwerk zugeordnet wird und das Befehlsfenster geöffnet wird. Was ist der Unterschied zwischen "% 1" und "% V"? Ehryk vor 10 Jahren 0
@Ehryk% 1 funktioniert nicht in `Directory \ Background \ Shell`;) Da Sie auf einen leeren Hintergrund geklickt haben, gibt es keinen Parameter für% 1 **. % V ist das ** Arbeitsverzeichnis **, das ** für einen Rechtsklick in den leeren Hintergrund eines Verzeichnisses ** verfügbar ist (immer noch der UNC, wenn er per Befehl aufgerufen wird). Sie finden eine Liste dieser speziellen Variablen [hier] (http://superuser.com/a/473602/235723). % W funktioniert auch. Rik vor 10 Jahren 0
Ich habe die Informationen zu meiner Antwort hinzugefügt. Rik vor 10 Jahren 0
"% V" war genau das, was ich brauchte, und diese Variablenliste hat mir enorm geholfen. Vielen Dank! Ehryk vor 10 Jahren 0