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

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

Obwohl cmd.exe mit UNC-Pfaden arbeiten kann PUSHD \\UNC\Path, indem es verwendet, versuche ich, cmd oder einen ähnlichen Befehl VON einem UNC-Pfad aus zu starten. Hier ist der Grund:

Ich füge meiner Suite von Kontextmenü-Tools, wie „Powershell hier starten“ und „Eingabeaufforderung hier öffnen“, ein „Netzlaufwerk hier zuordnen“ hinzu. Sie fügen Registrierungsschlüssel zur Windows-Registrierung hinzu, und das funktioniert hervorragend.

Als Beispiele öffnen diese hier eine Eingabeaufforderung:

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

"cmd /s /k ""VER && TITLE Command Prompt: %%%CD%%%"" "(Beim Rechtsklicken auf Verzeichnishintergründe, funktioniert nicht bei UNC-Pfaden)

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

"net use * ""%1"" "(Beim Rechtsklicken auf Ordner, funktioniert für UNC-Pfade)

"net use * ""%%%CD%%%"" "(Beim Rechtsklicken auf Verzeichnishintergründe, funktioniert nicht bei UNC-Pfaden)

Ich vermute, %%%CD%%%dass es durch cmd.exe erweitert wird, das nicht in einem UNC-Pfad gestartet werden kann.

Meine Frage lautet: Wie kann ich den Pfad des mit der rechten Maustaste angeklickten „Hintergrunds eines Laufwerks oder Verzeichnisses“ sowohl für UNC- als auch für Windows-Pfade in einem Registrierungsschlüssel erweitern, um ihn an einen Befehl zu übergeben?

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

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

Antwort1

Ich bin nicht sicher ... aber meinten Sie so etwas?(Sie müssen %V statt %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 ist NoWorkingDirectory dafür da, dass Sie keine anfängliche Fehlermeldung erhalten, wenn cmd mit einem UNC als Arbeitsverzeichnis geöffnet wird. Dadurch wird cmd ohne aktuelles Verzeichnis gestartet, wonach Sie ein Pushd ausführen, um einen temporären Laufwerksbuchstaben zu erhalten.)

Bearbeiten: Da Sie in einen leeren Bereich eines Verzeichnisses klicken, wird 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 einen leeren Bereich eines Netzwerkverzeichnisses klicken.

SehenHierfür eine vollständige Liste dieser Variablen.

verwandte Informationen