Selection dans un fichier de plusieurs chaines de caracteres et suppression des [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
2 février 2011
-
Messages postés
215
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
2 août 2012
-
je viens vers vous car je souhaite par un script en VBS lire un fichier quelconque et verifier l'existence de plusieurs chaines de caracteres, et quand cette chaine de caracteres existe, le but est de supprimer la ligne en question.

ce script en est un exemple, mais je ne peux que supprimer une seule ligne avec une seule chaine de caractere a la fois. comment puis-je faire pour mettre plusieurs chaines de caracteres et supprimer toutes les lignes s'y rapportant?

' Delete Lines of a Text File Beginning with a Specified String



Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\PORTABLE_HUBERT-WINAUDIT.txt"
strCheckForString = UCase("| Domain Name")


Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close

arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)

For Each strLine In arrLines
If Not(Left(UCase(LTrim(strLine)),Len(strCheckForString)) = strCheckForString) Then
objTS.WriteLine strLine
End If
Next

7 réponses

Messages postés
215
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
2 août 2012

clic sur réponse accepter


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Messages postés
215
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
2 août 2012

bonsoir aussi

Const ForWriting = 2
strFileName = "chemin du fichier"
strCheck1 = "variable à supprimer"
strCheck2 = "variable à supprimer"
strCheck3 = "variable à supprimer"
strCheck4 = "variable à supprimer"
strCheck5 = "variable à supprimer"
dim all 'variable qui va contenir le nouveau contenu du fichier
all = ""
'lire un fichier ligne par ligne
Set test = CreateObject("Scripting.FileSystemObject")
Set vbfrance = test.OpenTextFile(strFileName)
Do While Not vbfrance.AtEndOfStream
      ligne = vbfrance.Readline
if (instr (ligne , strCheck1)) <= 0  then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck2)) <= 0  then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck3)) <= 0  then 
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck4)) <= 0  then 
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck5)) <= 0  then
all = all & ligne & vbcrlf
end if
Loop
'on ferme le fichier
vbfrance.close
'on enregistre notre nouveau contenu sans les lignes supprimer
Set test2 = CreateObject("Scripting.FileSystemObject")
Set vbfrance2 = test2.OpenTextFile(strFileName, ForWriting,true)
vbfrance2.write(all)
vbfrance2.close


tu peut choisir une infinité de variable

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Messages postés
5
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
2 février 2011

Bonsoir,
Je viens de tester le scripot que vous vez posté en remplacant toutes les variables par les miennes et il ne se passe rien. le script se lance et ne s'arrete jamais. y a t-il une erreur dans ce que j'ai entré ? je souhaite egalement enlever toutes les lignes blanches (vides) en entrant la variable "".

Const ForReading = 1
Const ForWriting = 2
strFileName = "C:\scripts\PORTABLE_HUBERT-WINAUDIT.txt"
strCheck1 = "-------------"
strCheck2 = "Résumé du Système"
strCheck3 = "| Item"
strCheck4 = "| Site Name"
strCheck5 = ""
dim all 'variable qui va contenir le nouveau contenu du fichier
all = ""
'lire un fichier ligne par ligne
Set test = CreateObject("Scripting.FileSystemObject")
Set vbfrance = test.OpenTextFile(strFileName)
Do While Not vbfrance.AtEndOfStream
ligne = vbfrance.Readline
if (instr (ligne , strCheck1)) <= 0 then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck2)) <= 0 then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck3)) <= 0 then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck4)) <= 0 then
all = all & ligne & vbcrlf
elseif (instr (ligne , strCheck5)) <= 0 then
all = all & ligne & vbcrlf
end if
Loop
'on ferme le fichier
vbfrance.close
'on enregistre notre nouveau contenu sans les lignes supprimer
Set test2 = CreateObject("Scripting.FileSystemObject")
Set vbfrance2 = test2.OpenTextFile(strFileName, ForWriting,true)
vbfrance2.write(all)
vbfrance2.close

y a t-il une erreur a votre avis ?

HM
Messages postés
5
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
2 février 2011

Le script me renvoie le code suivant mais ne fait rien dans le fichier:

***** script completed - exit code: 0 *****

je pense que le probleme est au niveau du
Do While
loop

Quelqu'un voit-il ce qui manque?
HM
Messages postés
215
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
2 août 2012

ohhhhh

Do While Not vbfrance.AtEndOfStream
      ligne = vbfrance.Readline
if (instr (ligne , strCheck1)) <= 0  and _
(instr (ligne , strCheck2)) <= 0  and _
(instr (ligne , strCheck3)) <= 0  and _
                (instr (ligne , strCheck4)) <= 0  and _
                (instr (ligne , strCheck5)) <= 0  then
all = all & ligne & vbcrlf
end if
Loop




Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Messages postés
215
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
2 août 2012

et pour savoir si la ligne est vide ou pas

Do While Not vbfrance.AtEndOfStream
ligne = vbfrance.Readline
if (instr (ligne , strCheck1)) <= 0 and _
(instr (ligne , strCheck2)) <= 0 and _
(instr (ligne , strCheck3)) <= 0 and _
(instr (ligne , strCheck4)) <= 0 and _
(instr (ligne , strCheck5)) <= 0 and _
ligne <> "" then
all = all & ligne & vbcrlf
end if
Loop

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
Messages postés
5
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
2 février 2011

Merci voici le resultat final, du script qui marche a la perfection:

Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\scripts\PORTABLE_HUBERT-WINAUDIT.txt"
strCheck1 = "-------------"
strCheck2 = "Résumé du Système"
strCheck3 = "| Item"
strCheck4 = "| Site Name"
strCheck5 = "| Connection Status"
strCheck6 = "| ________ |"

dim all 'variable qui va contenir le nouveau contenu du fichier
all = ""

'lire un fichier ligne par ligne
Set test = CreateObject("Scripting.FileSystemObject")
Set vbfrance = test.OpenTextFile(strFileName, FOR_READING)
Do While Not vbfrance.AtEndOfStream
ligne = vbfrance.Readline
if (instr (ligne , strCheck1)) <= 0 and _
(instr (ligne , strCheck2)) <= 0 and _
(instr (ligne , strCheck3)) <= 0 and _
(instr (ligne , strCheck4)) <= 0 and _
(instr (ligne , strCheck5)) <= 0 and _
(instr (ligne , strCheck6)) <= 0 and _
ligne <> "" then
all = all & ligne & vbcrlf

end if
Loop
'on ferme le fichier
vbfrance.Close

'on enregistre notre nouveau contenu sans les lignes supprimees
Set test2 = CreateObject("Scripting.FileSystemObject")
Set vbfrance2 = test2.OpenTextFile(strFileName, FOR_WRITING,true)
vbfrance2.write(all)
vbfrance2.close