OVH Cloud OVH Cloud

Lire un fichier et remplacer des 00 en Hexa

10 réponses
Avatar
---DGI 972---
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600
0004030300000000413000000000000700000054293939000070034420005429393932007003
442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\TEST\Fichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:\TEST\Fichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un replace
des valeurs "00" en "20" hexa

Merci d'avance

10 réponses

Avatar
Georges MAUREL
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600

0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un replace
des valeurs "00" en "20" hexa

Merci d'avance




Avatar
---DGI 972---
C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20 sans
modifier la structure du fichier (la longueur de ce fichier est de 200).
merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600



0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il
faut


les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance








Avatar
Georges MAUREL
Bonjour,
Je ne pense pas que ce que j'ai proposé pose problème.
J'ai fait un test sur en fichier où j'ai remplacé les 20 héxa par 00 héxa
manuellement (avec Hex Editor).
Après application du script avec le replace j'ai retrouvé le même nombre
d'octets à la fin.
Je ne voies pas ce qui gène. A moins que tu ne veuilles remplacer les 00 que
sur la première ligne de ton fichier.
Auquel cas, tu devras faire une lecture ligne à ligne.

Cordialement
Georges


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20
sans

modifier la structure du fichier (la longueur de ce fichier est de 200).
merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600





0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il
faut


les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance












Avatar
Fred
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont pas
correctes" ni dans quelle mesure la taille de votre fichier est modifiée,
mais je me suis souvenu d'un petit bug d'un programme de mes débuts en C.
En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un fichier
texte, il y a le risque lors de la réécriture que des caractères 0A ou 0C
soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de news:

C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20
sans

modifier la structure du fichier (la longueur de ce fichier est de 200).
merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600





0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il
faut


les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance












Avatar
---DGI 972---
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et il ne
peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont remplacer
par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou en
binaire pour faire le remplacement des mes 00 en 20. Il y a des notions
ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais aussi
compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont pas
correctes" ni dans quelle mesure la taille de votre fichier est modifiée,
mais je me suis souvenu d'un petit bug d'un programme de mes débuts en C.
En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un fichier
texte, il y a le risque lors de la réécriture que des caractères 0A ou 0C
soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:


C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20
sans

modifier la structure du fichier (la longueur de ce fichier est de 200).
merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600







0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et il
faut


les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance
















Avatar
Georges MAUREL
Bonjour,
Y-aurait-il possibilité que tu joignes un exemple de fichier à traiter en
pièce jointe afin que l'on puisse se rendre compte ?

Cordialement
Georges


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:%
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et il ne
peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont
remplacer

par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou en
binaire pour faire le remplacement des mes 00 en 20. Il y a des notions
ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais aussi
compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont pas
correctes" ni dans quelle mesure la taille de votre fichier est
modifiée,


mais je me suis souvenu d'un petit bug d'un programme de mes débuts en
C.


En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un
fichier


texte, il y a le risque lors de la réécriture que des caractères 0A ou
0C


soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:


C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié
pas



exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20
sans

modifier la structure du fichier (la longueur de ce fichier est de
200).



merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message
de



news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message
de




news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600









0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et
il





faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance




















Avatar
Fred
Est-ce un hasard ? 14 en hexa c'est 20 en décimal.
A la remarque de George MAUREL j'ajouterai, pouvez-vous joindre votre script
?


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de news:
#
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et il ne
peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont
remplacer

par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou en
binaire pour faire le remplacement des mes 00 en 20. Il y a des notions
ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais aussi
compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont pas
correctes" ni dans quelle mesure la taille de votre fichier est
modifiée,


mais je me suis souvenu d'un petit bug d'un programme de mes débuts en
C.


En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un
fichier


texte, il y a le risque lors de la réécriture que des caractères 0A ou
0C


soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:


C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié
pas



exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par 20
sans

modifier la structure du fichier (la longueur de ce fichier est de
200).



merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message
de



news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message
de




news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600









0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00 et
il





faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire un
replace


des valeurs "00" en "20" hexa

Merci d'avance




















Avatar
---DGI 972---
Ci joint le script

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, chr(0), ' ')
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

il faut que le fichier fichier.S0B ( Sans zéro Binaires) existe sur le HDD.
merci

"Fred" a écrit dans le message de
news:
Est-ce un hasard ? 14 en hexa c'est 20 en décimal.
A la remarque de George MAUREL j'ajouterai, pouvez-vous joindre votre
script

?


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:

#
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et il ne
peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont
remplacer

par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou en
binaire pour faire le remplacement des mes 00 en 20. Il y a des notions
ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais aussi
compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont pas
correctes" ni dans quelle mesure la taille de votre fichier est
modifiée,


mais je me suis souvenu d'un petit bug d'un programme de mes débuts en
C.


En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un
fichier


texte, il y a le risque lors de la réécriture que des caractères 0A ou
0C


soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:


C'est vrai que avec chr(0) c'est mieux, mais mon fichier est modifié
pas



exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00 par
20




sans
modifier la structure du fichier (la longueur de ce fichier est de
200).



merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message
de



news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le
message





de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères erronés
je m'explique voici un morceau du fichier en question:

600











0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00
et






il
faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et faire
un






replace
des valeurs "00" en "20" hexa

Merci d'avance
























Avatar
Georges MAUREL
Bonjour,
Avec un fichier d'exemple on comprend mieux
Dans ton cas il vaut mieux faire une lecture ligne par ligne et tester
chaque caractère
Essaie le script suivant :

Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
set fo = fso.CreateTextFile("c:tempfichier.s0b",true)

Set f = fso.GetFile("c:tempfichier.ori")
Set ts = f.OpenAsTextStream(1,0)

Do While ts.AtEndOfStream <> True
v_ligne = ts.readline()

v_ligneout = ""

for v_nbcar = 1 to len(v_ligne)
v_car = mid(v_ligne,v_nbcar,1)
if asc(v_car)=0 then
v_car = " "
end if
v_ligneout = v_ligneout + v_car
next
fo.WriteLine(v_ligneout)
Loop

ts.Close
fo.Close
**********************

Cordialement
Georges



"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Merci pour vos réponses
ci joint donc le fichier malade
explication: ce fichier est issu d'une machine unix qui est censé me
générer

un fichier du type ASCII de longueur 200.
Mais de temps en temps la machine unix me rempli des vides avec des 00
alors

qu'il faut mettre des 20 (espace).
d'ou ce Script pour remplacer des 00 par des 20.
merci encore pour votre aide
Gilles

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Y-aurait-il possibilité que tu joignes un exemple de fichier à traiter
en


pièce jointe afin que l'on puisse se rendre compte ?

Cordialement
Georges


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:%
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et il
ne



peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont
remplacer

par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou en
binaire pour faire le remplacement des mes 00 en 20. Il y a des
notions



ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais
aussi



compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont
pas




correctes" ni dans quelle mesure la taille de votre fichier est
modifiée,


mais je me suis souvenu d'un petit bug d'un programme de mes débuts
en




C.
En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un
fichier


texte, il y a le risque lors de la réécriture que des caractères 0A
ou




0C
soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message
de




news:

C'est vrai que avec chr(0) c'est mieux, mais mon fichier est
modifié





pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00
par





20
sans
modifier la structure du fichier (la longueur de ce fichier est de
200).



merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le
message





de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le
message





de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères
erronés







je m'explique voici un morceau du fichier en question:

600













0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa 00
et






il
faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting, 0)
f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et
faire







un
replace
des valeurs "00" en "20" hexa

Merci d'avance





























Avatar
---DGI 972---
C'est génial ça marche merci et merci encore pour votre aide.

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:O%
Bonjour,
Avec un fichier d'exemple on comprend mieux
Dans ton cas il vaut mieux faire une lecture ligne par ligne et tester
chaque caractère
Essaie le script suivant :

Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
set fo = fso.CreateTextFile("c:tempfichier.s0b",true)

Set f = fso.GetFile("c:tempfichier.ori")
Set ts = f.OpenAsTextStream(1,0)

Do While ts.AtEndOfStream <> True
v_ligne = ts.readline()

v_ligneout = ""

for v_nbcar = 1 to len(v_ligne)
v_car = mid(v_ligne,v_nbcar,1)
if asc(v_car)=0 then
v_car = " "
end if
v_ligneout = v_ligneout + v_car
next
fo.WriteLine(v_ligneout)
Loop

ts.Close
fo.Close
**********************

Cordialement
Georges



"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:
Merci pour vos réponses
ci joint donc le fichier malade
explication: ce fichier est issu d'une machine unix qui est censé me
générer

un fichier du type ASCII de longueur 200.
Mais de temps en temps la machine unix me rempli des vides avec des 00
alors

qu'il faut mettre des 20 (espace).
d'ou ce Script pour remplacer des 00 par des 20.
merci encore pour votre aide
Gilles

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le message de
news:
Bonjour,
Y-aurait-il possibilité que tu joignes un exemple de fichier à traiter
en


pièce jointe afin que l'on puisse se rendre compte ?

Cordialement
Georges


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le message de
news:%
Cela ne fonctionne pas.
le fichier est bien modifié mais le script le casse encore plus et
il




ne
peut plus être ouvert avec un éditeur de texte classique.
Je n'arrive pas à trouver la logique mais les les 00 en hexa sont
remplacer

par des 14 en hexa ???
J'ai essayé aussi avec chB(0) et chW(0) mais sans résultat.
Je pense que le fait de lire la totalité du fichier avec:
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading, 0)
ReadAllTextFile = f.ReadAll
m'impose une structure et ne me permet pas de travailler en hexa à
l'intérieur du fichier. Il faudrait l'ouvrir et le lire en hexa ou
en




binaire pour faire le remplacement des mes 00 en 20. Il y a des
notions



ASCII ANSI UNICODE HEXA BINAIRE qui m'échappe un peu.
je me trompe ????

J'en suis toujours au même point je ne pensais pas que cela serais
aussi



compliqué.
Je ne sais plus dans quelle direction aller
SOS HELP
NB merci pour HEX Editor V2.0 plus la traduction en fr sur toutfr.


"Fred" a écrit dans le message de
news:
Je ne sais pas ce vous entendez par "les valeurs modifiées ne sont
pas




correctes" ni dans quelle mesure la taille de votre fichier est
modifiée,


mais je me suis souvenu d'un petit bug d'un programme de mes
débuts





en
C.
En ouvrant en mode texte, alors qu'il ne s'agit pas vraiment d'un
fichier


texte, il y a le risque lors de la réécriture que des caractères
0A





ou
0C
soient remplacés par une séquence 0A 0C (ou 0C 0A peut-être).
Cela pourrait expliquer le changement de taille.
A vérifier ....

NB : Je n'ai pas testé en VB script.


"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le
message





de
news:

C'est vrai que avec chr(0) c'est mieux, mais mon fichier est
modifié





pas
exactement comme je le voudrais:
Il n' a pas une notion d'octet ?
Les valeurs modifiées ne sont pas correctes.
Avec un éditeur hexa je souhaite remplacer toute les valeurs 00
par





20
sans
modifier la structure du fichier (la longueur de ce fichier est
de






200).
merci

"Georges MAUREL" <georges.maurel_at_free.fr> a écrit dans le
message





de
news:
Bonjour,
en faisant
Newtextfile = replace(readalltextfile, chr(0)," ")
au lieu de
Newtextfile = replace(readalltextfile, 00, 20)

cela devrait fonctionner...

"---DGI 972---" <wanagdermigny@*wanadoo.fr> a écrit dans le
message





de
news:
Bonjour,
Je dois nettoyer un fichier qui comporte des caractères
erronés







je m'explique voici un morceau du fichier en question:

600















0004030300000000413000000000000700000054293939000070034420005429393932007003

442000000100007200 0 100011
0

après le 600 il y a des "blanc" qui ont pour valeur en hexa
00








et
il
faut
les remplacer par la valeur 20 en hexa.

Je pensais, a tord, faire un OpenTextFile avec la valeur 0

Const ForReading = 1, ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:TESTFichier.ORI", ForReading,
0)








ReadAllTextFile = f.ReadAll
Newtextfile = replace(readalltextfile, 00, 20)
Set f = fso.OpenTextFile("C:TESTFichier.S0B", ForWriting,
0)








f.Write newtextfile

comment ouvrir le fichier pour pouvoir le lire en hexa et
faire







un
replace
des valeurs "00" en "20" hexa

Merci d'avance