Script de modification de lecteur reseau
Résolu
Dakolva
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
barnabe0057 Messages postés 14455 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à créer un batch qui modifie les lecteurs réseaux mappés sur une machine en remplaçant l'adresse IP par le nom du serveur de partage.
Le tout en conservant la lettre de lecteur.
J'ai fait ça
Cela fonctionne presque car il y a un espace à la fin du %%a qui fausse le chemin utilisé pour la commande NET USE.
Je ne parviens pas à supprimer cet espace qui doit déjà exister dans le fichier C:\temp\lecteursreseaux.txt je pense.
Quelqu'un peux m'aider ?
Je cherche à créer un batch qui modifie les lecteurs réseaux mappés sur une machine en remplaçant l'adresse IP par le nom du serveur de partage.
Le tout en conservant la lettre de lecteur.
J'ai fait ça
NET USE | find /I "\\192.168.1.2">C:\temp\lecteursreseaux.txt
IF %errorlevel%==0 goto changement
goto fin
:changement
setlocal EnableDelayedExpansion
for /f "tokens=2" %%m in (C:\temp\lecteursreseaux.txt) do (
NET USE %%m /delete /yes
for /f "tokens=3 delims=\" %%a in ('TYPE C:\temp\lecteursreseaux.txt') do (
NET USE %%m "\\srv-data\%%a"
)
)
Cela fonctionne presque car il y a un espace à la fin du %%a qui fausse le chemin utilisé pour la commande NET USE.
Je ne parviens pas à supprimer cet espace qui doit déjà exister dans le fichier C:\temp\lecteursreseaux.txt je pense.
Quelqu'un peux m'aider ?
A voir également:
- Changer lettre lecteur réseau
- Changer dns - Guide
- Changer lettre disque dur - Guide
- Clavier iphone chiffre et lettre - Guide
- Changer reseau wifi chromecast - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
7 réponses
J'ai trouvé une solution pour gérer les noms avec et sans espace, dans la limite d'un seul espace par nom :
(NET USE | find /I "\\192.168.1.2") && (call :changement)
exit
:changement
for /f "tokens=2,4,5 delims=\ " %%M in ('net use ^| find /I "\\192.168.1.2"') do (
NET USE %%M /delete /yes
(NET USE %%M "\\srv-data\%%N %%O") || (NET USE %%M \\srv-data\%%N)
)
goto :eof
rem
Bonjour,
Essaie voir comme ça :
Je me suis permis de simplifier le code, il était trop compliqué par rapport à la tâche à effectuer.
J'ai fusionné les deux boucles for, et j'ai utilisé la commande net use directement dans le for, au lieu de lire et d'écrire dans un fichier texte superflu.
Essaie voir comme ça :
(NET USE | find /I "\\192.168.1.2") && (call :changement)
exit
:changement
for /f "tokens=2,4 delims=\ " %%M in ('net use ^| find /I "\\192.168.1.2"') do (
NET USE %%M /delete /yes
NET USE %%M \\srv-data\%%N
)
goto :eof
rem
Je me suis permis de simplifier le code, il était trop compliqué par rapport à la tâche à effectuer.
J'ai fusionné les deux boucles for, et j'ai utilisé la commande net use directement dans le for, au lieu de lire et d'écrire dans un fichier texte superflu.
Alors,
Merci ça à l'air de fonctionner à condition de prendre en compte les espaces dans le nom de répertoire récupéré dans la variable %%N.
Sinon le chemin réseau n'est pas trouvé
Merci ça à l'air de fonctionner à condition de prendre en compte les espaces dans le nom de répertoire récupéré dans la variable %%N.
Sinon le chemin réseau n'est pas trouvé
comment fait-on pour que %%N soit complet genre :
\\srv-data\"répertoire avec espace"
\\srv-data\"répertoire avec espace"
Il faut rajouter un token :
Le problème c'est que si le nom de partage ne contient pas d'espace ça sera faux encore une fois.
(NET USE | find /I "\\192.168.1.2") && (call :changement)
exit
:changement
for /f "tokens=2,4,5 delims=\ " %%M in ('net use ^| find /I "\\192.168.1.2"') do (
NET USE %%M /delete /yes
NET USE %%M "\\srv-data\%%N %%O"
)
goto :eof
rem
Le problème c'est que si le nom de partage ne contient pas d'espace ça sera faux encore une fois.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non c'est pas là apparemment qu'il faut les rajouter.
C'est lors de la détection de la chaîne de caractère qui conduit à renseigner la variable %%N qu'il faut tout récupérer
C'est lors de la détection de la chaîne de caractère qui conduit à renseigner la variable %%N qu'il faut tout récupérer