Remplacement Z: par J: dans des fichiers txt
Résolu
lsda
Messages postés
24
Statut
Membre
-
lsda Messages postés 24 Statut Membre -
lsda Messages postés 24 Statut Membre -
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.
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
-
hello
protéger les % avec ^echo net use Z: \\192.168.1.2\^%USERNAME^%>>d:\montages.txt
-
-
-
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 -
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.
-
-
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
)