Remplacement Z: par J: dans des fichiers txt

Résolu
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.

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    protéger les % avec ^
    echo net use Z: \\192.168.1.2\^%USERNAME^%>>d:\montages.txt 
    0
    1. lsda Messages postés 24 Statut Membre
       
      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
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      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
    3. lsda Messages postés 24 Statut Membre
       
      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
    4. lsda Messages postés 24 Statut Membre
       
      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
  2. lsda Messages postés 24 Statut Membre
     
    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