Reemplazar un carácter en un .txt en batch.

dimedean -  
 dimedean -
Bonjour, j'aimerais savoir comment je pourrais 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 voudrais pouvoir changer un seul de ces "0" par un "1" du genre

00100000

L'idée est de pouvoir contrôler chacun des caractères séparément sans avoir à modifier tous les autres.

PS : je pensais créer 8 fichiers bat gérant chacun un des 8 caractères...

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

Configuration : Windows XP / Firefox 3.6.4

5 respuestas

  1. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    este .bat toma 2 parámetros, la posición del carácter a cambiar y el valor de reemplazo
    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 gracias por su paciencia chicos, ¡impecable!

      ¡Buen día a todos!
      0
  2. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    hola
    se muestran 2 caracteres, luego la X y el resto a partir del 4º carácter, así que hemos reemplazado el 3 por X
    C:> set x=1234567890 C:> echo %x:~0,2%X%x:~3,10% 12X4567890 C:>
    0
  3. dimedean
     
    ¡Muchas gracias, Dubcek, por tu respuesta rápida y precisa! Voy a intentar todo eso, te mantendré informado. ¡De nuevo, gracias!
    0
    1. dimedean
       
      Gracias Dubcek, acabo de intentar lo que me proponías y no lo consigo, soy novato en batch.

      Lo que quisiera saber es cómo se ve concretamente porque he intentado varias sintaxis diferentes pero no funciona.

      De nuevo, gracias.
      0
  4. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    Voici 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. dimedean
     
    Je suis désolé, mais je ne peux pas vous aider avec ça.
    0
    1. chuka Mensajes publicados 980 Estado Miembro 379
       
      Hola,
      puedes usar sed.exe (http://gnuwin32.sourceforge.net/packages/sed.htm y en tu batch eso te da:
      sed monfichier.txt -e"s/00000/00001/g" > monfichier1.txt
      del monfichier.txt
      rename monfichier1.txt monfichier.txt
      @+
      0