Bonjour,
je tente de supprimer d'un fichier texte toutes les lignes contenant une chaine de caractères particulière.
Exemple : j'ai ce fichier texte :
Je voudrais supprimer toutes les lignes contenant zzz donc je veux obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 TAHITI sdjfqhjkTAHITI ZZZ zzz aaa
J'ai un script (qui ne fonctionne pas, sinon je ne poserais pas la question ;-) comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TAHITI sdjfqhjkTAHITI ZZZ aaa
Dans le même dossier,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 @echo off setlocal set "nom_fichier=testfichier2.txt" set "chaine=zzz" type nul > resultat.txt set "temp_fichier=resultat.txt" echo Suppression des lignes contenant "%chaine%" dans "%nom_fichier%"... for /f "usebackq delims=" %%a in ("%nom_fichier%") do ( rem echo %%a | findstr /v "%chaine%" > nul echo %%a | findstr /v "%chaine%" > nul if !errorlevel! == 0 ( echo %%a >> "%temp_fichier%" ) ) move /y "%temp_fichier%" "%nom_fichier%" > nul echo Suppression terminee. endlocal
- je lis testfichier2,
- je crée un fichier temporaire resultat,
- Pour chaque ligne je teste si la chaine est présente, si ce n'est pas le cas (avec le /v) je réécris la ligne dans le fichier temporaire
- Je renomme les fichiers
Pour le moment, il n'écrit rien dans le fichier.
Si j'inverse la condition, (en mettant neq à la place de ==) il écrit tout.
En fait, le test de recherche ne fonctionne pas, je ne trouve pas l'erreur
Merci de votre aide.
Partager