Modifier une ligne dans un fichier texte (.txt)

WhiteBlako Messages postés 20 Statut Membre -  
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voici le fichier que je veux modifier :
:HOME  

cls

echo 17/07/2018 20:34:35,14

echo.
echo Name : WhiteBlako
echo.
echo Mobile : 00 00 00 00 00
echo Home : 00 00 00 00 00
echo.
echo Email : WhiteBlako@hotmail.com
echo.
echo Address : 1600 Pennsylvania Ave NW, Washington, DC
echo : 20500, États-Unis
echo.
echo Birthday : 18/11/1998 (20 years old)
echo : 18 November 1998
echo.
echo Father : Emmanuel Macron
echo Mother : Brigitte Macron
echo.
echo Note(s) : Moi
echo.
echo [ HOME ]
echo [ CREATE ]
echo [ LIST ]
echo [ WATCH ]
echo [ DELETE ]
echo.
echo What do you do ?
echo.
echo [ EXIT ]
echo.
set /p "HomeWant=> "

if /i "%HomeWant%" == "HOME" (
cd ".."

call "home.bat"
) else if /i "%HomeWant%" == "CREATE" (
cd ".."

call "create.bat"
) else if /i "%HomeWant%" == "LIST" (
cls

dir

pause > nul

goto HOME
) else if /i "%HomeWant%" == "WATCH" (
cd ".."

call "watch.bat"
) else if /i "%HomeWant%" == "DELETE" (
cd ".."

call "delete.bat"
) else if /i "%HomeWant%" == "EXIT" (
goto ExitSure
) else (
color 0c

cls

echo.
echo Incorrect choice !

timeout /t 3 /nobreak

color 0a

goto HOME
)

:ExitSure

echo.
echo Are you sure you want to leave your contact ? [YES/NO]
echo.
set /p "ExitSure=> "

if /i "%ExitSure%" == "YES" (
exit
) else if /i "%ExitSure%" == "NO" (
goto HOME
) else (
color 0c

cls

echo.
echo Incorrect choice !

timeout /t 3 /nobreak

color 0a

goto HOME
)
Tout cela pour arrivé à :

echo.
echo Quel partie voulez-vous modifier ?
echo.
set /p "partie=> "

echo.
echo Par quoi ?
echo.
set /p "partiemodif=> "

[rechercher "Name"]
[supprimer la ligne]
[remplacer la ligne]

/!\ Je pense que la seul solution c'est avec des for, mais j'ai chercher et je n'arrive pas à les comprendre pour les utiliser..

Merci à ceux qui aident,
WhiteBlako

2 réponses

  1. baptiste.r1807 Messages postés 1131 Date d'inscription   Statut Membre Dernière intervention   639
     
    1
    1. WhiteBlako Messages postés 20 Statut Membre 18
       
      Je vais prendre le temps de lire tout ça en faisant quelques tests,
      je vous tiens au courant.
      0
  2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    Bonjour,

    Je ne vois pas de fichier texte à modifier, tu as juste posté ton script.
    Est-ce que tu veux modifier un fichier texte ou un batch ?
    0
    1. WhiteBlako Messages postés 20 Statut Membre 18
       
      Je ne pense pas qu'il y ai une grosse différence, je m'entraine sur des fichiers textes, mais au final oui c'est pour modifier un fichier batch.
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > WhiteBlako Messages postés 20 Statut Membre
         
        On pourrait penser qu'il n' y a pas de différence, mais ça fait une énorme différence.

        C'est beaucoup plus complexe de modifier un batch, à cause des caractères spéciaux entre autres.

        Dis-moi si ça te convient :

        @echo off
        setlocal enableextensions enabledelayedexpansion

        cd /d %USERPROFILE%\Desktop

        echo. >nouveau.txt
        echo.
        echo Quel partie voulez-vous modifier ?
        set /p "partie=> "

        echo.
        echo Par quoi ?
        echo.
        set /p "partiemodif=> "

        for /f "usebackq delims=" %%E in ("whiteblako.bat") do (
        set ligne=#%%E

        for /f "tokens=1,* delims=:" %%A in ("!ligne!") do (
        set droite=%%B
        set gauche=%%A
        set gauche=!gauche:~1!

        >>nouveau.txt (echo !ligne! | findstr /C:"Name : %partie%" >nul && echo !gauche!: %partiemodif% || if defined droite (echo %%E) else (echo !gauche!))
        )
        )
        echo. & pause
        exit /b 0
        0