[dos] probleme de caracteres dans un fichier

probleme de caracteres dans un fichier [dos] - Shell/Batch - Programmation

Marsh Posté le 10-09-2003 à 22:56:01    

Bonjour,
 
je dois realiser un batch sous dos, et voici ma problematique.
 
Je recupere des fichiers ascii, et je dois les traiter ligne à ligne.
 
J'ai testé plein de methode à base de FOR, mais cela ne traitait pas toutes les lignes.
 
Apres avoir reperé les lignes qui provoquait des ruptures, voici ce dont je me suis apercu.
 
Dans certaine ligne il y a des caracteres (repere avec wordpad, et confirme avec ultra-edit) non affichables, le code hexa est "00" (zero binaire ?)
 
Du coup la commande FOR ne traite pas le fichier ligne a ligne, mais considere 1 ligne = le debut d'une ligne jusqu'a ce caractere.
 
Les fichiers sont crees en sortie d application COBOL, les lignes font 513 caracteres de long.
 
Question :
 
Peut-on modifier dans un fichier une valeur hexa par une autre ?
y'a t-il d'autres moyens de traiter un fichier que FOR ?
Le separateur de ligne 0D0A peut-il etre changé depuis un batch ?
 
Merci de vos reponses.
 
Precisions : Je ne peux faire que du batch DOS, pas de C, vbs, etc ...

Reply

Marsh Posté le 10-09-2003 à 22:56:01   

Reply

Marsh Posté le 11-09-2003 à 14:07:31    

Je ne peux faire que du batch DOS, pas de C, vbs, etc ...
 
En cas de besoin, y a moyen de lancer une appli spécifique écrite en C pour DOS (genre de filtre), le batch s'en sert.
 
En C, le 00 c'est la fin d'une chaîne de caractères, dommage qu'il soit dans le fichier
Le DOS ne considère pas une ligne se terminant en 0D0A ? (CrLf ?)
 
 [:yoyoz] aux spécialistes
("tr" sous UNIX translate des caractères d'après ce qu'on m'a dit, existe pas sous DOS (?))

Reply

Marsh Posté le 15-09-2003 à 23:38:47    

CARBON_14 a écrit :

Je ne peux faire que du batch DOS, pas de C, vbs, etc ...
 
En cas de besoin, y a moyen de lancer une appli spécifique écrite en C pour DOS (genre de filtre), le batch s'en sert.
 
En C, le 00 c'est la fin d'une chaîne de caractères, dommage qu'il soit dans le fichier
Le DOS ne considère pas une ligne se terminant en 0D0A ? (CrLf ?)
 
 [:yoyoz] aux spécialistes
("tr" sous UNIX translate des caractères d'après ce qu'on m'a dit, existe pas sous DOS (?))


le dos se sert de 0d0a comme separateur de ligne, helas quand je prend ce fichier dans un FOR pour traiter mes lignes 1 à 1, celui-ci "perd" les pedales en arrivant sur la ligne avec le "00" ....
J'ai réussi à contourner le problème en faisant un FIND /V des lignes contenant le caractère "00". Cependant je me retoruve avec le restant de la ligne (après le "00" ) comme une ligne normale.
mais bon je traite enfin toutes les lignes du fichier.

Reply

Marsh Posté le 16-09-2003 à 08:47:03    

Il existe un programme pour remplacer tous les 00 binaires dans un fichier par le caractère espace.
Je recherche et je reposte.
 
A+

Reply

Marsh Posté le 16-09-2003 à 08:49:47    

C'est dans le pack DOS que tu trouveras là :
http://www.herve-thouzard.com/free.phtml
 
A+

Reply

Marsh Posté le 17-09-2003 à 23:04:41    

JPA a écrit :

C'est dans le pack DOS que tu trouveras là :
http://www.herve-thouzard.com/free.phtml
 
A+


merci pour ce pack qui a l'air super interessant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed