É uma pergunta bastante antiga, mas ... Eu estava procurando a mesma resposta exata que tentava criar um lote que usasse o caminho UNC para o local real do patch e fizesse algumas coisas lá (apenas copie e cole em outro local / pasta e comece novamente).
Como não consegui encontrar uma resposta, encontrei uma solução, mas não é muito bonito e certamente não é um comando simples. Mas é possível implementar em lote. No CMD seria:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Você pode copiar as quatro linhas (melhor 4 + linha vazia) e colá-las no CMD para obter um eco imediato do caminho para copiá-lo.
No lote, você o usaria um pouco diferente:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
A variável% CD% armazena o caminho atual e você precisa apenas da letra da unidade; portanto, procure somente isso com o comando FIND em NET USE. Com os "tokens = 2" (ou 3, dependendo da saída NET USE), a variável% i armazena o caminho para a letra da unidade que você procurou. Depois disso, o segundo comando SET adiciona as pastas que você navegou na unidade de rede com% CD: ~ 2% (deslocamento 2 para cortar a letra da unidade).
Para o lote, você usa as variáveis% ~ d0 ou% ~ p0. % 0 armazena o caminho completo do próprio lote (por exemplo, Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = unidade, p = caminho, f = caminho completo, n = nome), caso contrário, é semelhante ao comando CMD.