C'est une question assez ancienne mais ... Je cherchais la même réponse exacte que j'essayais de créer un lot qui utilisera le chemin UNC vers l'emplacement réel du patch et y fera certaines choses (donc copiez-collez uniquement vers un autre emplacement / dossier et recommencez).
Comme je n'ai pas trouvé de réponse, j'ai trouvé une solution moi-même, mais ce n'est pas très beau et certainement pas une commande simple. Mais il est possible de l'implémenter en batch. Sur CMD, ce serait:
FOR /F "tokens=2" %i IN ('NET USE ^| FIND "%CD:~0,2%"') DO (
SET cNetworkPath=%i)
SET cNetworkPath=%cNetworkPath%%CD:~2%
ECHO %cNetworkPath%
Vous pouvez copier les quatre lignes (mieux 4 + ligne vide) et les coller dans CMD pour obtenir un écho imidiate du chemin pour le copier.
En lot, vous l'utiliseriez un peu différemment:
FOR /F "tokens=2" %%i IN ('NET USE ^| FIND "%~d0"') DO (
bNetworkPath=%%i)
SET bCheckPath=!bOriginalPath!%~p0
La variable% CD% stocke le chemin actuel et vous n'avez besoin que de la lettre de lecteur, vous ne devez donc la rechercher qu'avec la commande FIND dans NET USE. Avec les "tokens = 2" (ou 3, selon la sortie NET USE), la variable% i stocke le chemin d'accès à la lettre de lecteur que vous avez recherchée. Après cela, la deuxième commande SET ajoute les dossiers que vous avez parcourus sur le lecteur réseau avec% CD: ~ 2% (décalage 2 pour couper la lettre de lecteur).
Pour le lot, vous utilisez les variables% ~ d0 ou% ~ p0. % 0 stocke le chemin complet du lot lui-même (par exemple Z: \ temp \ test.bat;% ~ d0 = Z:;% ~ p0 = \ temp \; d = lecteur, p = chemin, f = chemin complet, n = nom) sinon c'est similaire à la commande CMD.