Remplacer UN caractère dans un .txt en batch.

dimedean -  
 dimedean -
Bonjour, j'aimerai savoir comment je pourrai remplacer un seul caractère dans un fichier txt en utilisant un .bat ou autre...je m'explique :
j'ai un fichier texte contenant :

00000000

Et je voudrai pouvoir changer un seul de ces "0" par un "1" du genre

00100000

L'idée et de pouvoir contrôler chacun des caractère séparément sans avoir a modifier tout les autres.

PS: je pensé créer 8 fichier bat gérant chacun un des 8 caractère...

Voila j'espère que quelqu'un trouvera mon bonheur ! je vous remercie d'avance bonne journée a tous.

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ce .bat prend 2 paramètres, la position du caractère à changer et la valeur de remplacement
    C:> type lpt.txt
    00000000
    
    C:> aa 3 1
    
    C:> type lpt.txt
    00100000
    
    C:> aa 5 2
    
    C:> type lpt.txt
    00102000
    
    C:> aa 3 0
    
    C:> type lpt.txt
    00002000
    
    C:> type aa.bat
    @echo off
    
    set pos=%1
    set /a p1=pos-1
    set c=%2
    
    setlocal enableDelayedExpansion
    for /f "tokens=1" %%a in (lpt.txt) do (
    set x=%%a
    set y=!x:~0,%p1%!%c%!x:~%pos%,10!
    echo !y! > lpt.txt
    )
    
    C:>
    1
    1. dimedean
       
      OK merci de votre patience les gars impeccable !

      bonne journée a tous.
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    on affiche 2 caractères puis le X puis le reste à partir du 4ème caractère, donc on a remlacé le 3 par X
    C:> set x=1234567890
    
    C:> echo %x:~0,2%X%x:~3,10%
    12X4567890
    
    C:>
    0
  3. dimedean
     
    Merci beaucoup dubcek pour cet réponse rapide et précise !! je vais essayer tout ça je te tien au courant . encore merci .
    0
    1. dimedean
       
      Merci dubcek je viens d'essayer ce que tu m'a proposer et je n'y arrive pas je suis novice en batch.

      ce que je voudrai savoir c'est ce que cela donne concrètement par ce que j'ai essayer plusieurs syntaxes différentes mais ça ne marche pas.

      Voila encore merci.
      0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    montre un exemple plus précis de ce que tu veux faire
    C:> set x=00000000
    
    C:> set y=%x:~0,2%1%x:~3,10%
    
    C:> echo %x% & echo %y%
    00000000
    00100000
    
    C:>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. dimedean
     
    Donc je m'explique, mon fichier "lpt.txt" ce trouve a la racine de mon HDD, il contient:

    00000000

    Et je voudrai creer des fichiers bat capable de changer chacun des caractères séparement comme je l'est énoncer avant.

    Mon problemme ce pose surtout sur la syntaxe du fichier bat. si tu pouvais me montrer clairement ce qu'y ce trouve dans le .bat. (non pas que ton éxplication n'est pas clair mais comme je l'es dit je suis novice en bat).

    Voila voila merci.

    j'espere avoir etait un peu plus clair.
    0
    1. chuka Messages postés 980 Statut Membre 379
       
      salut,
      tu peux utiliser sed.exe (http://gnuwin32.sourceforge.net/packages/sed.htm et dans ton batch cela te donne:
      sed monfichier.txt -e"s/00000/00001/g" > monfichier1.txt
      del monfichier.txt
      rename monfichier1.txt monfichier.txt
      @+
      0