To dość stare pytanie, ale ... szukałem dokładnie tej samej odpowiedzi, gdy próbowałem utworzyć partię, która użyje ścieżki UNC do faktycznej lokalizacji łatki i zrobi tam pewne rzeczy (więc skopiuj i wklej tylko w inne miejsce / folder i zacznij od nowa).
Ponieważ nie mogłem znaleźć odpowiedzi, sam znalazłem rozwiązanie, ale nie jest to zbyt piękne i na pewno nie jest to proste polecenie. Ale możliwe jest wdrożenie w partii. Na CMD byłoby to:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Możesz skopiować cztery linie (lepiej 4 + pusta linia) i wkleić je do CMD, aby uzyskać natychmiastowe echo ścieżki do skopiowania.
W partii użyłbyś tego nieco inaczej:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
Zmienna% CD% przechowuje bieżącą ścieżkę i potrzebujesz tylko litery napędu, więc możesz jej szukać tylko za pomocą polecenia ZNAJDŹ w NET USE. Przy „tokenach = 2” (lub 3, w zależności od wyniku NET USE) zmienna% i przechowuje ścieżkę do poszukiwanej litery dysku. Następnie drugie polecenie SET dodaje foldery, które przeglądałeś na dysku sieciowym za pomocą% CD: ~ 2% (przesunięcie 2, aby odciąć literę napędu).
Dla partii używasz zmiennych% ~ d0 lub% ~ p0. % 0 przechowuje pełną ścieżkę samej partii (np. Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = dysk, p = ścieżka, f = pełna ścieżka, n = nazwa) w przeciwnym razie jest podobny do polecenia CMD.