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.