Remplacement Z: par J: dans des fichiers txt

[Résolu/Fermé]
Signaler
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013
-
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013
-
Bonjour,
j'ai 200 fichiers txt contenant par exemple:
U: \\192.168.1.1\partage1 /PERSISTENT:YES
V: \\192.168.1.6\partage3 /PERSISTENT:YES

Sachant que les lettre de lecteurs et les mappage peuvent changer d'un fichier à l'autre, je voudrait savoir comme faire pour remplacer une lettre de lecteur Z: en J: si Z: est présent dans un fichier.txt .

Autre chose, j'ai la commande suivante:
echo net use Z: \\192.168.1.2\%USERNAME%>>d:\montages.txt

Hors dans montage.txt je voudrais voir apparaitre %USERNAME% et non pas la valeur de %USERNAME%.

Merci.


2 réponses

Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 331
hello
protéger les % avec ^
echo net use Z: \\192.168.1.2\^%USERNAME^%>>d:\montages.txt 
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013

avec la commade suivante:
echo net use Z: \\192.168.1.2\^%USERNAME^%>>d:\montages.txt

J'obtient dans le fichier.txt:
net use Z: \\192.168.1.2\

Donc ça ne semble pas fonctionner.

Si ca peut aisder, la commande echo est inclu dans un FOR avec l'option "usebackq"
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 331
montre la commande
C:> echo net use Z: \\192.168.1.2\^%USERNAME^%>>montages.txt
C:> type montages.txt
net use Z: \\192.168.1.2\%USERNAME%
C:>
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013

Voila un exemple du contenu des fichier que je retraite:
Les nouvelles connexions seront m'moris'es.


etat Local Distant R'seau

-------------------------------------------------------------------------------
ok W: \\192.168.1.3\Drivers Microsoft Windows Network
Non disponib Y: \\192.168.1.1\partage1 Microsoft Windows Network
Non disponib Z: \\192.168.1.1\partage2 Microsoft Windows Network
La commande s'est termin'e correctement.

Voilà mon script complet

setlocal enableDelayedExpansion
set dest=d:\montages_lecteurs
set source=d:\liste

FOR %%D in (d:\liste\) do (
FOR /f "usebackq" %%i in ('dir /b %source%') do (
echo.>%dest%\resultat.txt
echo.>%dest%\netusetemp.txt
set FicExt=%%~nxi
echo.>%dest%\!FicExt!
:: Ne garde que les lignes avec une lettre de lecteur
findstr /C:": " d:\netuse\!FicExt!>>%dest%\resultat.txt
:: Supprime tous ce qui est avant la lettre de lecteur
FOR /f "tokens=*" %%m in (%dest%\resultat.txt) do (
set ligne=%%m
set filtre=!ligne:~13!
echo !filtre!>>%dest%\netusetemp.txt
)
FOR /f "tokens=1,2 delims= " %%a in (%dest%\netusetemp.txt) do (
set lecteur=%%a
if "%%a" == "Z:" (set lecteur=J:)
echo net use !lecteur! %%b /PERSISTENT:YES>>%dest%\!FicExt!
)
echo.net use Z: \\192.168.1.2\users\%USERNAME% /PERSISTENT:YES>>%dest%\!FicExt!
)
)
del %dest%\netusetemp.txt
del %dest%\resultat.txt
endlocal
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013

Bon, pour le %USERNAME%, j'ai quelque chose qui fonctionne mais je ne sais pas trop pourquoi:
echo net use Z: \\sbroclu1fs\users\^%%USERNAME^%% /PERSISTENT:YES>>%dest%\!FicExt!
Peut-etre parce que l'on est dans un FOR...

J'avais déjà essayé le "^" mais je n'avais pas doublé les %...

En tout cas Merci dupcek.
Messages postés
23
Date d'inscription
dimanche 6 janvier 2008
Statut
Membre
Dernière intervention
30 décembre 2013

Bon pour remplacer la lettre de lecteur, j'ai trouvé:
FOR /f "tokens=1,2 delims= " %%a in (d:\fichier.txt) do (
set lecteur=%%a
if "%%a" == "Z:" (set lecteur=J:)
echo net use !lecteur! %%b /PERSISTENT:YES>>d:\montages.txt
)