Recherche et suppresion des elements dans fichiers txte en batch

mfeyet Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Quester4 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'aimerai savoir comment faire une recherche dans un fichier texte par exemple dans un annuaire telephonique qui recherche un numero entrer par l'utilisateur et affiche toutes ses donees(nom,mumero,age) .
et j'aimerais savoir comment supprimer un abonees dans un fichier txt sachant son numero
merci
et voici une portion du code que j'ai commencer
@echo off
cls
color 3F
:debut
echo ÉÍÍÍÍÍÍÍÍ»
echo º MENU º
echo ÉÍÍÍÍÍÍÍͼ
echo 1. ajouter un abonne
echo 2. supprimer un abonne
echo 3. rechercher un abonne connaissant son numero
echo 4.afficher tous les abonnes
echo entrer votre choix
set /p choix=
if "%choix%"=="1" goto suite1
if "%choix%"=="4" goto suite2
echo.
:suite1
echo entrer le nom
set /p nom=
echo nom: %nom% >>identification.txt
echo entrer le prenom
set /p prenom=
echo prenom: %prenom% >>identification.txt
echo entrer l'age
set /p age=
echo age: %age% >>identification.txt
echo entrer le sexe F/M
set /p sexe=
echo sexe : %sexe% >>identification.txt
echo entrer le numero
set /p numero=
echo numero: %numero% >>identification.txt
goto end
: end
echo voulez vous continuer o/n
set /p x=
if "%x%"=="o" goto debut
if"%x%"=="n" pause>nul
:suite2
type identification.txt
goto end
A voir également:

1 réponse

Quester4 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   126
 
Salut,
Le code que tu cherches est assez simple.
Pour la recherche :
findstr "%numero%" fichier.txt

Ce code va trouver dans le fichier toutes les lignes contenant le numéro.
Par contre, il y a un problème, c'est que tu devrais mettre dans ton fichier tous les identifiants entrés sur la même ligne. Comme ceci :
echo %nom%;%prenom%;%age%;%sexe%;%numero%>>identification.txt

Ainsi, un utilisateur aura une seule ligne, au lieu de 5. Ce qui va te permettre de les retrouver.


Inversement, tu peux supprimer des abonnés avec la même commande :
echo Vous allez supprimer l'utilisateur suivant :
findstr "%numero%" identification.txt
echo Voulez-vous vraiment continuer ?
set /p valid=o/n
if /i "%valid%"=="n" goto :debut
findstr /v "%numero%" identification.txt>temp.temp
type temp.temp>identification.txt
del temp.temp
echo L'utilisateur a ete supprime.

Le paramètre /v permet de trouver toutes les lignes n'ayant pas la chaîne spécifiée.
Par contre, il faut savoir que plusieurs utilisateurs peuvent être supprimés par erreur, c'est assez dangereux.
Exemple :
Utilisateur A, numéro 34
Utilisateur B, numéro 534
Supprimer l'utilisateur A supprimera aussi l'utilisateur B, car il contient "34" dans son numéro.
Enfin, si ce sont des numéros à taille fixe ce genre de problèmes ne devrait pas se produire.

En espérant t'avoir aidé,
Quester4
0