Modifier une ligne dans un fichier texte (.txt)

Fermé
WhiteBlako Messages postés 20 Date d'inscription jeudi 14 juin 2018 Statut Membre Dernière intervention 26 septembre 2019 - Modifié le 18 juil. 2018 à 04:00
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 21 juil. 2018 à 05:03
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
A voir également:

2 réponses

baptiste.r1807 Messages postés 1167 Date d'inscription mercredi 11 février 2015 Statut Membre Dernière intervention 8 août 2023 633
18 juil. 2018 à 12:33
1
WhiteBlako Messages postés 20 Date d'inscription jeudi 14 juin 2018 Statut Membre Dernière intervention 26 septembre 2019 18
18 juil. 2018 à 14:28
Je vais prendre le temps de lire tout ça en faisant quelques tests,
je vous tiens au courant.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
18 juil. 2018 à 21:44
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
WhiteBlako Messages postés 20 Date d'inscription jeudi 14 juin 2018 Statut Membre Dernière intervention 26 septembre 2019 18
19 juil. 2018 à 21:38
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
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908 > WhiteBlako Messages postés 20 Date d'inscription jeudi 14 juin 2018 Statut Membre Dernière intervention 26 septembre 2019
21 juil. 2018 à 05:03
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