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).

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

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.


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%

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.