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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
TAHITI
sdjfqhjkTAHITI
ZZZ
zzz
aaa
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
TAHITI
sdjfqhjkTAHITI
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
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
Dans le même dossier,
- 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.