Remplacement Z: par J: dans des fichiers txt

Résolu/Fermé
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013 - Modifié par lsda le 7/11/2013 à 15:41
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013 - 8 nov. 2013 à 08:29
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.


A voir également:

2 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
7 nov. 2013 à 15:55
hello
protéger les % avec ^
echo net use Z: \\192.168.1.2\^%USERNAME^%>>d:\montages.txt 
0
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013
Modifié par lsda le 7/11/2013 à 16:30
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"
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
7 nov. 2013 à 16:36
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:>
0
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013
Modifié par lsda le 7/11/2013 à 16:58
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
0
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013
8 nov. 2013 à 08:29
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.
0
lsda Messages postés 23 Date d'inscription dimanche 6 janvier 2008 Statut Membre Dernière intervention 30 décembre 2013
7 nov. 2013 à 16:21
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
)
0