OVH Cloud OVH Cloud

Suppression d'un enregistrement

8 réponses
Avatar
yves cohen
Bonjour,

J'ai un fichier texte et je voudrais supprimer un enregistrement quelle
est SVP la fonction ou l'ordre =E0 =E9crire

Merci

Yves

8 réponses

Avatar
Gilles LAURENT
"yves cohen" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| J'ai un fichier texte et je voudrais supprimer un enregistrement
| quelle est SVP la fonction ou l'ordre à écrire

Un fichier texte peut être considéré comme une base de données pilotée
par exemple avec le driver ODBC Microsoft Text Driver (.txt, .csv).
Toutefois, les commandes SQL UPDATE et DELETE pour la mise à jour ou la
suppression des enregistrements ne sont pas supportées. Pour supprimer
un "enregistrement", il est donc nécessaire de manipuler le fichier
texte dans le but de rechercher puis supprimer la ou les lignes
désirées.

Pouvez-vous nous préciser les éléments suivants :
- format du fichier texte + exemples
- critère de suppression (numéro de ligne, chaine de caractères précise,
...)
- langage de script (batch, vbscript, ...)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
yves cohen

"yves cohen" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| J'ai un fichier texte et je voudrais supprimer un enregistrement
| quelle est SVP la fonction ou l'ordre à écrire

Un fichier texte peut être considéré comme une base de données pi lotée
par exemple avec le driver ODBC Microsoft Text Driver (.txt, .csv).
Toutefois, les commandes SQL UPDATE et DELETE pour la mise à jour ou la
suppression des enregistrements ne sont pas supportées. Pour supprimer
un "enregistrement", il est donc nécessaire de manipuler le fichier
texte dans le but de rechercher puis supprimer la ou les lignes
désirées.

Pouvez-vous nous préciser les éléments suivants :
- format du fichier texte + exemples
- critère de suppression (numéro de ligne, chaine de caractères pr écise,
...)
- langage de script (batch, vbscript, ...)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD


Bonjour Gilles,

Voici le programme

'Je définis le chemin réseau du fichier a tester
fic="ctrl-prem4templogin.bat"
'Ouverture du fichier
Set fso = CreateObject ("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(fic,1,True)
'Variable detect servira a detecter l'existance de l'occurence
dans le fichier
detect="0"
detect1="0"
'Pour chaque ligne du fichier old_ini, j'execute la procedure
ci-dessous
Do While file.AtEndOfStream <>True
'Variable ligne contient la ligne en cours
ligne = file.Readline
'Si la ligne contient l'occurence recherchee, j'incrémente
la variable detect
if Instr(1, ligne, "META", 1) > 0 Then
detectÞtect+1
end If
if (InStr(1, ligne, "toto", 1) or InStr(1, ligne, "test",
1)) > 0 Then
detect1Þtect1+1
end If

Loop
'Je ferme le fichier
file.close
msg = "Nombre de META " & detect &vbcrlf
msg = msg + "Nombre d'admin " & detect1 &vbcrlf
MsgBox "Résultat : " &vbcrlf &vbcrlf & MSG


en fait, je voudrais pouvoir supprimer les lignes qui sont concernées
par ces trois occurences dès que je les trouve

Merci

Yves

Avatar
Gilles LAURENT
"yves cohen" a écrit dans le message de
news:

Bonjour Yves,

| en fait, je voudrais pouvoir supprimer les lignes qui sont concernées
| par ces trois occurences dès que je les trouve

Ci-dessous le script VBScript 'deleteRecords.vbs' :

--- Coupez ici : deleteRecords.vbs ---

Option Explicit

' déclaration des variables
Dim oFs, oFile
Dim strRecords, strRecord

' définition des constantes
Const File = "ctrl-prem4templogin.bat"
Const ForReading = 1
Const ForWriting = 2

' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")

' ouverture du fichier
Set oFile = oFs.OpenTextFile (File, ForReading)

' lecture de tous les enregistrements
strRecords = oFile.ReadAll

' réinitialisation du fichier
Set oFile = oFs.OpenTextFile (File, ForWriting)

' parcours des enregistrements
For Each strRecord In Split (strRecords, VBCrLf)
If _
strRecord <> "" And _
InStr (1, strRecord, "META", VBTextCompare) = 0 And _
InStr (1, strRecord, "toto", VBTextCompare) = 0 And _
InStr (1, strRecord, "test", VBTextCompare) = 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If
Next

' fermeture du fichier
oFile.Close

--- Coupez ici : deleteRecords.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
yves cohen

"yves cohen" a écrit dans le message de
news:

Bonjour Yves,

| en fait, je voudrais pouvoir supprimer les lignes qui sont concernées
| par ces trois occurences dès que je les trouve

Ci-dessous le script VBScript 'deleteRecords.vbs' :

--- Coupez ici : deleteRecords.vbs ---

Option Explicit

' déclaration des variables
Dim oFs, oFile
Dim strRecords, strRecord

' définition des constantes
Const File = "ctrl-prem4templogin.bat"
Const ForReading = 1
Const ForWriting = 2

' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")

' ouverture du fichier
Set oFile = oFs.OpenTextFile (File, ForReading)

' lecture de tous les enregistrements
strRecords = oFile.ReadAll

' réinitialisation du fichier
Set oFile = oFs.OpenTextFile (File, ForWriting)

' parcours des enregistrements
For Each strRecord In Split (strRecords, VBCrLf)
If _
strRecord <> "" And _
InStr (1, strRecord, "META", VBTextCompare) = 0 And _
InStr (1, strRecord, "toto", VBTextCompare) = 0 And _
InStr (1, strRecord, "test", VBTextCompare) = 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If
Next

' fermeture du fichier
oFile.Close

--- Coupez ici : deleteRecords.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD



Merci beaucoup Gilles et à bientôt

Cordialement

Yves

Avatar
Dagor
Bonsoir Gilles,


Si je préfère seulement garder tous les ER et les RT et les noms "toto",
"tata", titi", comment dois-je faire

merci

Yves

"Gilles LAURENT" a écrit dans le message de news:

"yves cohen" a écrit dans le message de
news:

Bonjour Yves,

| en fait, je voudrais pouvoir supprimer les lignes qui sont concernées
| par ces trois occurences dès que je les trouve

Ci-dessous le script VBScript 'deleteRecords.vbs' :

--- Coupez ici : deleteRecords.vbs ---

Option Explicit

' déclaration des variables
Dim oFs, oFile
Dim strRecords, strRecord

' définition des constantes
Const File = "ctrl-prem4templogin.bat"
Const ForReading = 1
Const ForWriting = 2

' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")

' ouverture du fichier
Set oFile = oFs.OpenTextFile (File, ForReading)

' lecture de tous les enregistrements
strRecords = oFile.ReadAll

' réinitialisation du fichier
Set oFile = oFs.OpenTextFile (File, ForWriting)

' parcours des enregistrements
For Each strRecord In Split (strRecords, VBCrLf)
If _
strRecord <> "" And _
InStr (1, strRecord, "META", VBTextCompare) = 0 And _
InStr (1, strRecord, "toto", VBTextCompare) = 0 And _
InStr (1, strRecord, "test", VBTextCompare) = 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If
Next

' fermeture du fichier
oFile.Close

--- Coupez ici : deleteRecords.vbs ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Avatar
Gilles LAURENT
"Dagor" a écrit dans le message de
news:451812d6$0$29485$
| Bonsoir Gilles,

Bonsoir,

| Si je préfère seulement garder tous les ER et les RT et les noms
| "toto", "tata", titi", comment dois-je faire

Il suffit de modifier le filtre :

If _
strRecord <> "" And _
InStr (1, strRecord, "ER", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "RT", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "toto", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "tata", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "titi", VBTextCompare) <> 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
yves cohen

"Dagor" a écrit dans le message de
news:451812d6$0$29485$
| Bonsoir Gilles,

Bonsoir,

| Si je préfère seulement garder tous les ER et les RT et les noms
| "toto", "tata", titi", comment dois-je faire

Il suffit de modifier le filtre :

If _
strRecord <> "" And _
InStr (1, strRecord, "ER", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "RT", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "toto", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "tata", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "titi", VBTextCompare) <> 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD


Bonjour Gilles,

J'ai appliqué ce dernier filtre mais le fichier n'est pas modifié, il
reste tel quel
avez-vous une autre idée ?

Cdlt

Yves

Avatar
yves cohen


"Dagor" a écrit dans le message de
news:451812d6$0$29485$
| Bonsoir Gilles,

Bonsoir,

| Si je préfère seulement garder tous les ER et les RT et les n oms
| "toto", "tata", titi", comment dois-je faire

Il suffit de modifier le filtre :

If _
strRecord <> "" And _
InStr (1, strRecord, "ER", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "RT", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "toto", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "tata", VBTextCompare) <> 0 Or _
InStr (1, strRecord, "titi", VBTextCompare) <> 0 _
Then
' écriture des enregistrements à conserver
oFile.WriteLine (strRecord)
End If

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD


Bonjour Gilles,

J'ai appliqué ce dernier filtre mais le fichier n'est pas modifié, il
reste tel quel
avez-vous une autre idée ?

Cdlt

Yves


Pardon, j'avais une erreur dans mon script

Merci pour tout

Cordialement

Yves