Déterminer le chemin d'accès réseau mappé à partir de la fenêtre cmd

26

J'ai un lecteur réseau - mappé sur Z:\

Existe-t-il une commande simple pour connaître le chemin d'accès complet au réseau cmd?

C'est à dire si cmdmontre Z:\ABC\, j'avais comme une commande pour sortir\\networkDrive\MappedDir\ABC

net use est bien mais je voudrais obtenir le chemin complet du répertoire de travail actuel (pour des copies rapides).

Ofiris
la source

Réponses:

37

Type

net use

Ce qui vous montrera tous les lecteurs réseau actuellement connectés.

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
Darius
la source
Merci, connaissez-vous un moyen d'obtenir le chemin complet du répertoire de travail actuel?
Ofiris
1
Et alors echo %cd%?
Endoro
@Endoro, affiche echo %cd%le répertoire actuel ( Z:\ABC) et non\\netDrive\ABC
Ofiris
Je ne pense pas qu'il y ait une ligne de commande simple que vous puissiez faire pour l'obtenir. Vous pouvez peut-être écrire un script batch / powershell pour le faire, mais je n'ai pas essayé d'en créer un. Vérifiez la réponse d'Icare sur: superuser.com/questions/244579/… peut-être pouvez-vous l'utiliser à votre besoin.
Darius
Qu'en est-il des lecteurs qui ne sont pas actuellement connectés (par exemple, via un VPN actuellement déconnecté)?
1

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.

Mykorrhiza
la source
l'échantillon est intrigant, mais cassé. Par exemple, l'exemple (DO...)en lot est manquant SET ...et bOriginalPathn'est défini nulle part.
matt wilkie
0

Le chemin de la chauve-souris peut être différent du répertoire de travail. Nous avons donc besoin de la première approche de Mykorrhiza à l'intérieur d'une chauve-souris. Pour s'adapter à la situation de statut manquant ainsi qu'aux unités de disque locales, nous avons besoin de vérifications supplémentaires. Voici le code de travail:

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%

Le code ci-dessus fonctionne dans la plupart des cas, mais il existe des cas où l'utilisation nette et la recherche ne fonctionnent pas, voici la méthode de travail finalement testée:

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%
Franc
la source
0

Si vous souhaitez qu'il s'affiche toujours à votre invite, vous pouvez

set prompt=$M$Q$S$P

qui vous montrera votre chemin UNC et votre chemin basé sur la lettre de lecteur.

Beurre aux biscuits
la source