J'écris actuellement un script qui doit mapper un lecteur réseau sur la lettre Z
, j'utilise la commande Net Use z: \\path
, le fait est que si l'utilisateur utilise déjà cette lettre, je ne pourrai pas le mapper. , y at-il un moyen de vérifier l’existence de ce lecteur (z) et s’il existe pour le démonter et le monter sur une lettre différente tout en utilisant le lecteur z
dont j’ai besoin pour mon script, c’est une partie de et il devrait être sur le lecteur Z.
Vous pouvez vérifier si le lecteur est monté par IF EXIST Z:\
. Cela devrait fonctionner:
if exist z:\ (
Net Use z: /delete
)
Net Use z: \\path
Une autre façon possible pourrait être:
Net Use Z:
if %errorlevel% EQU 0 Net Use Z: /delete
Net Use Z: \\path
J'utilise le script suivant pour annuler le mappage de tous les lecteurs:
:: First unmap all network drives
FOR /F "tokens=1,2,3" %%G IN ('Net Use^| Find "\\"') DO (
ECHO.Unmapping %%I from drive letter %%H
Net Use %%H /D > NUL
)
Qu'est ce que ça fait? Séparons cela
FOR/F "jetons = 1,2,3" %% G IN () DO () -> itérera sur l'ensemble défini entre () et les premier, deuxième et troisième mots (tout espace blanc est utilisé comme séparateur) deviennent disponibles en tant que %% G, %% H et %% I respectivement.
('...') lancera une commande ... et transmettra le résultat à la boucle FOR
Net Use produira quelque chose comme ceci:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
OK M: \\diskstation\music Microsoft Windows Network
OK P: \\diskstation\home Microsoft Windows Network
OK V: \\diskstation\video Microsoft Windows Network
OK X: \\diskstation\photo Microsoft Windows Network
The command completed successfully.
Cette sortie est ensuite redirigée vers Find.exe (l’équivalent Windows de grep) qui recherche "\\".
Le symbole de la pipe | est échappé en utilisant ^ donc cmd ne l'exécute pas directement. La sortie sera alors:
OK M: \\diskstation\music Microsoft Windows Network
OK P: \\diskstation\home Microsoft Windows Network
OK V: \\diskstation\video Microsoft Windows Network
OK X: \\diskstation\photo Microsoft Windows Network
Net Use/D supprimera le mappage de lecteur pour le mappage sélectionné
En batch, vous pouvez écrire le code comme ceci:
@echo off
Net Use V: >nul 2>&1
if %errorlevel% equ 0 goto unmap
s'il existe, V:\
ne fonctionne pas sous Windows 10, Net Use
affiche également des informations supplémentaires. Je l'ai maintenant supprimé à l'aide de >nul 2>&1
.
Pour répondre à la question initiale, vous pouvez vérifier si Z est déjà mappé, puis le mapper sur une lettre de lecteur différente (par exemple, y :), puis mapper z sur le nouveau chemin.
if exist z:\ (
for /F "tokens=1,2*" %%G in ('Net Use^|Find "\\"^|Find /I "z:"') do ( Net Use y: %%H )
Net Use z: /delete
)
Net Use z: \\path