Comment gérez-vous «CMD ne prend pas en charge les chemins UNC en tant que répertoires actuels»?


24

J'essaie de changer les répertoires en un serveur de fichiers tel que:

cd \\someServer\\someStuff\

Cependant, j'obtiens l'erreur suivante:

CMD ne prend pas en charge les chemins UNC en tant que répertoires actuels

Quelles sont mes options pour accéder à ce répertoire?


Réponses:


34

Si vous envisagez de l'écrire, il est toujours utile d'en savoir plus sur les commandes pushdet popd. Parfois, vous ne pouvez pas être sûr des lettres de lecteur déjà utilisées sur la machine sur laquelle le script s'exécutera et il vous suffit de prendre la prochaine lettre de lecteur disponible. Étant donné net useque vous devrez spécifier le lecteur, vous pouvez simplement utiliser pushd \\server\folderpuis popdlorsque vous avez terminé.


Si vous spécifiez «*» au lieu d'une lettre de lecteur, net use utilisera la première vérification de lecteur disponible à partir de ZA. donc 'net use * \\ server \ share' sans Z: le lecteur mappé
mapperait

Mais alors vous ne savez pas quelle lettre de lecteur a été mappée, pour le reste du script.
tomfanning

@tomfanning Vous pouvez trouver la lettre de lecteur en utilisant ceci (wmic logicdisk get caption, provideername, drivetype, volumename) à partir de l'invite de commande, puis analyser la sortie à la recherche de votre \\ servername \ sharename. serverfault.com/questions/62578/…
Chris Magnuson

1
@pk. Et si le script plantait avant d'exécuter votre popd?
Pacerier

15

Ou vous pouvez basculer votre shell vers PowerShell . Il a un support complet pour les chemins UNC.


Sauf lorsque explorer.exe a une poignée sur le fichier que vous essayez de supprimer. Même avec la fenêtre de l'explorateur fermée, je pense que le fournisseur PS FileSystem (en supposant qu'il s'agit d'un fournisseur) utilise probablement explorer.exe sous le capot. ou dites-vous qu'il existe un moyen d'utiliser UNC sans le fournisseur?
JohnZaj

11

Vous pouvez utiliser net usepour mapper un lecteur réseau sur un chemin UNC, puis recherchez le lecteur mappé.


2
Vrai, c'est la seule façon de le faire à partir de la ligne de commande, mais méfiez-vous de l'utiliser pour tout sauf les commandes à jeter (c'est-à-dire les choses que vous ne faites qu'une seule fois) car sinon vous rencontrez des problèmes avec le lecteur non mappé ou étant mappé mais pas connecté, et plusieurs noms d'utilisateur :(
Mark Henderson

1
Vous ne pouvez pas passer à ce répertoire, mais vous pouvez toujours l'utiliser dans les commandes: dir \\ someserver \ stuff call \\ someserver \ stuff \ everything.bat
Benoit

1
En fait, vous pourriez être en mesure d'utiliser \\ someserver \ share ... vous avez juste besoin du hack de reg pour le faire :-)
Bart Silverstrim

@BartSilverstrim, comment?
Pacerier


1

En plus de mapper explicitement un lecteur afin qu'il cmdpuisse faire face, ce qui pourrait également être nécessaire par d'autres utilitaires, vous pouvez également essayer un autre shell de commande comme PowerShell.


1

Cela a fonctionné pour moi dans Win8x64:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001

Vous devriez également pouvoir le faire dans HKCU, assurez-vous simplement de vous déconnecter puis de vous reconnecter.


1

selon @pk, utilisez pushd & popd, voici un exemple.

utilisez pushd pour créer un lecteur virtuel temporaire et après avoir fait un popd pour supprimer le lecteur virtuel temporaire

:selectFolder
REM Confirm which Folder structure
set /p location="Delete files for which QA environment: (P)retoria, (C)ape, (L)uanda or (Q)uit? (C/L/P/Q)"
REM  I option allows for upper and lower case
if /I "%location%"=="C" set folder="\\Tfwcqa\tfwcqa\EORDERS"
if /I "%location%"=="L" set folder="\\Tfluaqa\tfluaqa\EORDERS"
if /I "%location%"=="P" set folder="\\Tfptaqa\tfptaqa\EORDERS"
if /I "%location%"=="Q" goto endBatch

REM you can not cd to a network drive so we use pushd to create a temporary virtual drive
REM cd /d %folder%
pushd %folder%

DIR /S

REM popd deletes the temporary virtual drive
popd

0

La commande de jonction ne fonctionnerait-elle pas ici?


1
Ne le pensez pas, la jonction ne fonctionne que pour les répertoires locaux.
Berzemus

Est-ce que ça marche? De l'article de Wikipedia: "Les points de jonction ne peuvent être liés qu'à des répertoires sur un volume local; les points de jonction à des partages distants ne sont pas pris en charge."
Peter Mortensen

@#%!# tu as raison. Je pensais que c'était comme une commande de montage, j'ai oublié que j'avais ce problème quand je l'ai étudié il y a deux ans. soupir Désolé ...
Bart Silverstrim

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.