web-dev-qa-db-fra.com

Comment exécuter un fichier de commandes à partir d'un partage réseau sans le message "Les chemins UNC ne sont pas pris en charge"?

J'essaie d'exécuter un fichier de commandes à partir d'un partage réseau, mais le message suivant continue à apparaître: "Les chemins UNC ne sont pas pris en charge. Par défaut, le répertoire Windows." Le fichier de commandes est situé sur \\Server\Soft\WPX5\install.bat. Lorsque je suis connecté en tant qu'administrateur, depuis le bureau Windows 7, je navigue vers \\Server\Soft\WP15\ et double-clique sur install.bat. C'est à ce moment-là que le chemin "UNC ne sont pas pris en charge". message. J'ai trouvé quelques suggestions en ligne indiquant que le lecteur de cartes ne fonctionnerait pas, mais l'utilisation d'un lien symbolique résoudrait ce problème, mais le lien symbolique ne fonctionnait pas pour moi. Vous trouverez ci-dessous le contenu de mon fichier de commandes. J'apprécierais toute aide susceptible de m'aider à accomplir ce que j'essaie de faire. En gros, je veux pouvoir exécuter le fichier de commandes à partir de \\Server\Soft\WP15\install.bat.

Contenu du fichier batch

mklink /d %userprofile%\Desktop\WP15 \\server\soft\WP15
\\server\soft\WP15\setup.exe
robocopy.exe "\\server\soft\WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s \\server\soft\WPX5\Custom\Migrate.reg

Aussi, comment puis-je supprimer le lien symbolique une fois l'installation terminée?

68
Stew

PUSHD et POPD devraient vous aider dans votre cas.

@echo off
:: Create a temporary drive letter mapped to your UNC root location
:: and effectively CD to that location
pushd \\server\soft

:: Do your work
WP15\setup.exe
robocopy.exe "WP15\Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s WPX5\Custom\Migrate.reg

:: Remove the temporary drive letter and return to your original location
popd

Tapez PUSHD /? à partir de la ligne de commande pour plus d'informations.

121
dbenham

Il existe un paramètre registry pour éviter cette vérification de sécurité (utilisez-le à vos risques et périls, cependant):

Sous le chemin du registre

HKEY_CURRENT_USER 
\Logiciel 
\Microsoft 
\Processeur de commandes 

ajoutez la valeur DisableUNCCheck REG_DWORD et définissez la valeur sur 0 x 1 (Hex).

Remarque: Sous Windows 10 version 1803, le paramètre semble se trouver sous HKLM: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

22
Vinzz

Je pense que cls est la meilleure réponse. Il cache le message UNC avant que quiconque puisse le voir. Je l'ai combiné avec un @pushd %~dp0 juste après pour que le résultat semble ressembler à l'ouverture du script et au mappage de l'emplacement en une étape, évitant ainsi des problèmes UNC supplémentaires.

cls
@pushd %~dp0
:::::::::::::::::::
:: your script code here
:::::::::::::::::::
@popd

Remarques:

pushd changera votre répertoire de travail à l'emplacement des scripts du nouveau lecteur mappé.

popd à la fin, pour nettoyer le lecteur mappé.

16
Grallen

En gros, vous ne pouvez pas l'exécuter à partir d'un chemin UNC sans voir ce message.

Ce que je fais habituellement, c'est simplement de mettre une CLS en haut du script afin que je n'ai pas à voir ce message. Ensuite, spécifiez le chemin d'accès complet aux fichiers du partage réseau que vous devez utiliser.

9
aphoria

Je devais être capable de simplement explorer Windows Explorer à travers le partage de serveur, puis double-cliquez sur lancer le fichier de commandes. @dbenham m'a conduit à une solution plus facile pour mon scénario (sans les soucis de popd):

:: Capture UNC or mapped-drive path script was launched from
set NetPath=%~dp0

:: Assumes that setup.exe is in the same UNC path
%NetPath%setup.exe

:: Note that NetPath has a trailing backslash ("\")
robocopy.exe "%NetPath%Custom" /copyall "C:\Program Files (x86)\WP\Custom Templates"
Regedit.exe /s %NetPath%..\WPX5\Custom\Migrate.reg

:: I am not sure if WPX5 was typo, so use ".." for parent directory
set NetPath=
pause
7
JayRO-GreyBeard

Au lieu de lancer le lot directement à partir de l'Explorateur, créez un raccourci vers le lot et définissez le répertoire de départ dans les propriétés du raccourci sur un chemin local tel que% TEMP% ou autre.

Pour supprimer le lien symbolique, utilisez la commande rmdir.

3
jameslr

J'ai rencontré le même problème récemment en travaillant avec un fichier de commandes sur un lecteur de partage réseau dans Windows 7.

Une autre méthode qui a fonctionné pour moi a été de mapper le serveur sur un lecteur via l'Explorateur Windows: Outils -> Mapper un lecteur réseau. Donnez-lui une lettre de lecteur et un chemin de dossier à\yourserver. Étant donné que je travaille avec le partage réseau, le mappage y est souvent plus pratique, et l'erreur "Le chemin UNC non pris en charge" a été résolue. 

1
Kai

Ma situation est juste un peu différente. J'exécute un fichier de commandes au démarrage pour distribuer la dernière version des applications métier internes. 

Dans cette situation, j'utilise la clé d'exécution du registre Windows avec la chaîne suivante 

cmd /c copy \\serverName\SharedFolder\startup7.bat %USERPROFILE% & %USERPROFILE%\startup7.bat

Cela exécute deux commandes au démarrage dans le bon ordre. Commencez par copier le fichier de commandes localement dans un répertoire sur lequel l'utilisateur est autorisé. Puis exécution du même fichier de commandes. Je peux créer un répertoire local c:\InternalApps et copier tous les fichiers du réseau. 

C'est probablement trop tard pour résoudre la question de l'affiche originale, mais cela pourrait aider quelqu'un d'autre. 

1
James

C'est la RegKey que j'ai utilisée:

Windows Registry Editor Version 5.00

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

Ma version env Windows10 2019 lts et j'ajoute ces deux données binaires, corrigeons cette erreur

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor DisableUNCCheck value 1 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Command Processor DisableUNCCheck value 1

0
Zhui Wang