Bestimmen Sie den zugeordneten Netzwerkpfad im Cmd-Fenster

26

Ich habe ein Netzlaufwerk zugeordnet Z:\

Gibt es einen einfachen Befehl, um den vollständigen Netzwerkpfad zu ermitteln cmd?

Dh wenns cmdzeigt Z:\ABC\, musste ich gerne einen Befehl ausgeben\\networkDrive\MappedDir\ABC

net use ist in Ordnung, aber ich möchte den vollständigen Pfad des aktuellen Arbeitsverzeichnisses erhalten (für Schnellkopien).

Ofiris
quelle

Antworten:

37

Art

net use

Welches zeigt Ihnen alle derzeit verbundenen Netzlaufwerk.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
Darius
quelle
Danke, kennen Sie eine Möglichkeit, den vollständigen Pfad des aktuellen Arbeitsverzeichnisses abzurufen?
Ofiris
1
Was ist echo %cd%?
Endoro
@Endoro echo %cd%gibt das aktuelle Verzeichnis ( Z:\ABC) und nicht\\netDrive\ABC
Ofiris
Ich glaube nicht, dass es eine einfache Befehlszeile gibt, die Sie verwenden können, um sie abzurufen. Möglicherweise können Sie ein Batch- / Powershell-Skript dafür schreiben, aber ich habe nicht versucht, eines zu erstellen. Überprüfen Sie die Antwort von Icarus unter: superuser.com/questions/244579/…. Vielleicht können Sie sie nach Ihren Wünschen verwenden.
Darius
Was ist mit Laufwerken, die derzeit nicht verbunden sind (z. B. über ein VPN, das derzeit nicht verbunden ist)?
1

Es ist eine ziemlich alte Frage, aber ich habe nach genau der gleichen Antwort gesucht, als ich versucht habe, einen Stapel zu erstellen, der den UNC-Pfad zum tatsächlichen Ort des Patches verwendet und einige Dinge dort ausführt (also nur kopieren und an einem anderen Ort einfügen). Ordner und starten Sie erneut).

Da ich keine Antwort finden konnte, habe ich selbst eine Lösung gefunden, aber sie ist nicht sehr schön und sicherlich kein einfacher Befehl. Aber es ist möglich, im Batch zu implementieren. Auf CMD wäre es:

FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

Sie können die vier Zeilen (besser 4 + leere Zeile) kopieren und in CMD einfügen, um ein unmittelbares Echo des Pfads zum Kopieren zu erhalten.

Im Batch würden Sie es ein bisschen anders verwenden:

FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
      bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0

Die Variable% CD% speichert den aktuellen Pfad und Sie benötigen nur den Laufwerksbuchstaben, sodass Sie diesen nur mit dem Befehl FIND in NET USE suchen. Mit "tokens = 2" (oder 3, abhängig von der NET USE-Ausgabe) speichert die Variable% i den Pfad zum gesuchten Laufwerksbuchstaben. Danach fügt der zweite SET-Befehl die Ordner hinzu, die Sie mit% CD: ~ 2% auf dem Netzwerklaufwerk durchsucht haben (Offset 2, um den Laufwerksbuchstaben abzuschneiden).

Für Batch verwenden Sie die Variablen% ~ d0 oder% ~ p0. % 0 speichert den vollständigen Pfad des Stapels selbst (z. B. Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = Laufwerk, p = Pfad, f = vollständiger Pfad, n = name) ansonsten ist es dem CMD-Befehl ähnlich.

Mykorrhiza
quelle
Das Sample ist faszinierend, aber kaputt. Zum Beispiel (DO...)fehlt das In-Batch-Beispiel SET ...und bOriginalPathist nirgends definiert.
Matt Wilkie
0

Der Pfad der Fledermaus kann vom Arbeitsverzeichnis abweichen. Wir brauchen also Mykorrhizas ersten Ansatz in einer Fledermaus. Um den fehlenden Status und auch die lokalen Festplatten zu berücksichtigen, müssen zusätzliche Überprüfungen durchgeführt werden. Das Folgende ist der Arbeitscode:

SET cNetworkPath=    
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
      SET cNetworkPath=%%i)
if "%cNetworkPath%" == "%CD:~0,2%" (
  FOR /F "tokens=3" %%i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
        SET cNetworkPath=%%i)
)
if "%cNetworkPath%" == "" set cNetworkPath=%CD:~0,2%
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%

Der obige Code funktioniert in den meisten Fällen, aber es gibt Fälle, in denen die Netznutzung und der Suchvorgang nicht funktionieren. Dies ist die endgültig getestete Arbeitsmethode:

SET cNetworkPath=
for /f "tokens=2" %%i in ('wmic path win32_mappedlogicaldisk get deviceid^, providername ^| findstr "%CD:~0,2%"') do (set cNetworkPath=%%i)
echo %cNetworkPath%
Frank
quelle
0

Wenn Sie möchten, dass es immer an Ihrer Eingabeaufforderung angezeigt wird, können Sie dies tun

set prompt=$M$Q$S$P

Das zeigt Ihnen Ihren UNC-Pfad und Ihren Laufwerksbuchstaben-basierten Pfad.

Keks Butter
quelle