web-dev-qa-db-fra.com

Déterminer le chemin réseau mappé à partir de la fenêtre cmd

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

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

C'est à dire. si cmd montre Z:\ABC\, j'avais comme commande de sortir \\networkDrive\MappedDir\ABC

Net Use est correct, mais je voudrais obtenir le chemin complet du répertoire de travail actuel (pour des copies rapides).

26
Ofiris

Type

Net Use

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

OK           Z:        \\127.0.0.1\c$            Microsoft Windows Network
37
Darius

C’est une question assez ancienne, mais… je cherchais exactement la même réponse, car j’essayais de créer un lot qui utilisera le chemin UNC vers l’emplacement réel du correctif et y fera certaines choses (donc, il suffit de copier-coller vers dossier et recommencer).

N'ayant pu trouver de réponse, j'ai moi-même trouvé une solution, mais ce n'est pas très beau et ce n'est certainement pas une commande simple. Mais il est possible d'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 immédiat du chemin à copier.

En batch, 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 le recherchez donc qu'avec la commande FIND dans Net Use. Avec les "jetons = 2" (ou 3, en fonction de la sortie Net Use), la variable% i stocke le chemin d'accès à la lettre de lecteur 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 du lecteur).

Pour le traitement par lots, 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.

1
Mykorrhiza

Si vous voulez qu'il soit toujours affiché à 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.

0
Cookie Butter

Le chemin de la batte 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 tenir compte de l'état manquant et des unités de disque locales, nous avons besoin de contrôles 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 dans certains cas, l'utilisation du réseau 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
Frank