Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modification d'un fichier en batch

    21 juillet 2016 à 17:09:10

    Bonjour,

    Je souhaiterais réaliser un fichier .bat qui permet de modifier un fichier (n'importe quelle extension, ici un .txt pour exemple)

    Voici mon script : 

    cd %~p0
    set file="readme.txt"
    set modify="bind-address	= 127.0.0.1"
    
    for /f "tokens=1 delims=" %%I in ('type %file%') do (
    	if "%%I"==%modify% (
    		echo bind-address 	= 127.0.0.1>>readme2.txt
    		echo bind-address 	= ::1>>readme2.txt
    	) else (
    		echo %%I>>readme2.txt
    	)
    )

    Ce script m'écrit bien le contenu du fichier readme.txt dans readme2.txt en modifiant la ligne souhaitée.

    Le problème c'est qu'il ne prend pas en compte les sauts de ligne, après des recherches sur Google j'ai remarqué que la boucle for en batch ne s'occupait pas des lignes vides.

    Du coup j'ai fait un autre script assez similaire : 

    cd %~p0
    set file="readme.txt"
    set modify="bind-address	= 127.0.0.1"
    
    for /f "tokens=1 delims=" %%i in ('findstr /n .* %file%') do (
    	if %%i=="^[0-9]*:$" (
    		echo.>>readme2.txt
    	)
    	if "%%i"==%modify% (
    		echo bind-address 	= 127.0.0.1>>readme2.txt
    		echo bind-address 	= ::1>>readme2.txt
    	) else (
    		echo %%i>>readme2.txt
    	)
    )

    Avec ce script le fichier readme2.txt reçoit bien le contenu du fichier readme.txt avec les sauts de ligne mais le numéro des pages apparaît à chaque ligne, c'est pour cela que je voudrais supprimer les numéros de lignes via une expression régulière comme : 

    if %%i==[0-9]*: (
        echo.>>readme2.txt
    )

    Mais cela ne fonctionne pas, il ne passe jamais dans la boucle, mon expression régulière doit pas être bonne.

    Je voudrais avoir une expression du style : un nombre de n'importe quelle taille suivi des : pour supprimer les numéros de lignes

    Quelqu'un aurais-t-il une solution pour faire mon expression régulière ou une autre solution (je ne pars peut-être pas sur la bonne piste, il y a peut-être une solution plus simple)



    -
    Edité par shadkamikaze 21 juillet 2016 à 17:10:18

    • Partager sur Facebook
    • Partager sur Twitter
      21 juillet 2016 à 22:05:28

      Hello,

      Je ne sais pas si ça te convient, mais moi pour modifier une ligne d'un fichier je fais comme ceci :

      set fichier=test2.txt
      for /f "tokens=1 delims==" %%I in ('type "%fichier%"') do (
      if not %%I==IP (
      echo %%I>>provFile.ini
      ) else (
      echo CeQueTuVeuxMettrePourRemplacerLaLigneCommençantParIP>>provFile.ini
      )
      )
      pause
      del /f /q %fichier%
      ren "provFile.ini" "%fichier%"

      A adapter en fonction de ton besoin (delims ; condition (le if) ; echo)

      -
      Edité par Zaibai 21 juillet 2016 à 22:06:53

      • Partager sur Facebook
      • Partager sur Twitter
        22 juillet 2016 à 12:00:33

        J'ai justement pris ton script en exemple que j'ai adapter au mien mais il ne conserve pas les sauts de lignes.

        Je voudrais les conserver pour une meilleure lisibilité du fichier.

        Si quelqu'un à une solution ?

        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2016 à 9:39:54

          Quelqu'un a t'il une solution ?

          Merci d'avance

          • Partager sur Facebook
          • Partager sur Twitter
            29 juillet 2016 à 9:56:45

            Est-ce qu'il y a quelqu'un qui aurait une solution ? car je ne vois pas comment faire
            • Partager sur Facebook
            • Partager sur Twitter
              4 août 2016 à 19:08:32

              Je n'ai toujours pas trouver de solution à mon problème quelqu'un pourrait'il m'aidez ?

              • Partager sur Facebook
              • Partager sur Twitter

              Modification d'un fichier en batch

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown