Modifier une ligne dans un fichier texte (.txt) [Fermé]

Signaler
Messages postés
20
Date d'inscription
jeudi 14 juin 2018
Statut
Membre
Dernière intervention
26 septembre 2019
-
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
-
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

Messages postés
1115
Date d'inscription
mercredi 11 février 2015
Statut
Membre
Dernière intervention
19 octobre 2019
574
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
20
Date d'inscription
jeudi 14 juin 2018
Statut
Membre
Dernière intervention
26 septembre 2019
13
Je vais prendre le temps de lire tout ça en faisant quelques tests,
je vous tiens au courant.
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410
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 ?
Messages postés
20
Date d'inscription
jeudi 14 juin 2018
Statut
Membre
Dernière intervention
26 septembre 2019
13
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.
Messages postés
13547
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
22 juin 2021
4 410 >
Messages postés
20
Date d'inscription
jeudi 14 juin 2018
Statut
Membre
Dernière intervention
26 septembre 2019

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