Convertir un fichier texte en csv avec une commande dos ??

Convertir un fichier texte en csv avec une commande dos ?? - Win NT/2K/XP - Windows & Software

Marsh Posté le 12-11-2002 à 16:36:28    

Bonjour,  
 
Je souhaite convertir un fichier texte ( separation par espace ) en fichier CSV ( séparation par des point virgules )
Le tout en commande DOS.
 
Merci  
 
 
URGENT

Reply

Marsh Posté le 12-11-2002 à 16:36:28   

Reply

Marsh Posté le 12-11-2002 à 16:37:27    

avec edit ...

Reply

Marsh Posté le 12-11-2002 à 16:38:02    

sed sous linux. mais en cherchant un peu ca doit etre possible d'avoir une version de sed compile sous windows. (enfin je pense)

Reply

Marsh Posté le 12-11-2002 à 16:46:36    

Ok merci je vais essayer.
PS : Avec edit c'est quoi la syntaxe ??
Je voudrais pouvoir le faire en mode dos complet, car je dois automatiser ca pour l'exporter via de l'as 400.
 
merci  

Reply

Marsh Posté le 12-11-2002 à 16:47:06    

si tu sais programmer en C , ca te prend 1 minute a programmer (sans rire)
 
tiens la preuve je t ecris le source
 
utilisation prog fic_entree fic_sortie
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char* argv[])
  3. {
  4. FILE *in;
  5. FILE *out;
  6. int l;
  7. int i;
  8. if (argc != 3) {
  9. printf("Syntax : prog [input file] [output file]\n" );
  10. return 1;
  11. }
  12. in = fopen(argv[1],"rb" );
  13. out = fopen(argv[2],"wb" );
  14. fseek(in,0,SEEK_END);
  15. l = ftell(in);
  16. fseek(in,0,SEEK_SET);
  17. for (i=0; i <l;i++) {
  18. unsigned char c;
  19. fread(&c,1,1,in);
  20. if (c == 0x20) {
  21. c = ';';
  22. }
  23. fwrite(&c,1,1,out);
  24. }
  25. fclose(in);
  26. fclose(out);
  27. }


 
39 s  (fiou ...)
 
edit : 52 s :lol:


Message édité par xilebo le 12-11-2002 à 17:17:06
Reply

Marsh Posté le 12-11-2002 à 16:53:04    

Je ne sais pas programmer en c    snif..
Ton prog comment y marche si je le programme ??

Reply

Marsh Posté le 12-11-2002 à 16:55:38    

tu prends un compilateur C et tu le compiles tel quel ca marche
j'ai juste oublié un truc, je le rajoute maintenant ... par contre y a pas la gestion d erreur alors te trompe pas dans son utilisation (si tu l appelle sans donner un nom de fichier d entree et un nom de fichier de sortie ca plante)
 
 
edit : et te trompe pas dans l ordre d appel du fichier entree et sortie : c est PROG ENTREE SORTIE si tu fais le contraire ca efface ton fichier ENTREE


Message édité par xilebo le 12-11-2002 à 16:57:38
Reply

Marsh Posté le 12-11-2002 à 16:59:43    

Ok merci amigos.
 
Je suis en train de récupere un compiler ( devccp4 )
Je pense que cela fera l'affaire .
 
merci

Reply

Marsh Posté le 12-11-2002 à 17:15:46    

OK c'est cool le prog mais comment je l'exploite ??
 
PS: Je ne connais pas le C
 
J'ai lancer le prog, puis inserer la syntaxe, puis j'ai compiler
mais comment j'exporte ca sous forme de fichier executable ?

Reply

Marsh Posté le 12-11-2002 à 17:18:35    

j ai fait un nouvo code reprend celui la il compile c sur g essayé.
 
Bah tu crees un projet , tu inseres un fichier .cpp dans lequel tu copies le code que je t ai donné ... et dans ton menu tu dois avoirune option build ... tu utilises cette option et ca te crees l executable c est tout.

Reply

Marsh Posté le 12-11-2002 à 17:18:35   

Reply

Marsh Posté le 12-11-2002 à 17:20:42    

Au pire si t y arrive pas donne moi ton mail je te file une version compilée (j ai compilée sous windows par contre mais ca marche en console...)

Reply

Marsh Posté le 12-11-2002 à 17:24:24    

En faite je t'explique ce que je dois faire :
 
on va recevoir un fichier du boite tout les mois qui lui est en format texte.
moi tous les mois je dois le convertir en .csv ( car le separateur est en pint virgule ) puis je dois le reinjecter dans l'as 400 afin de continuer le projet.
 

Reply

Marsh Posté le 12-11-2002 à 17:26:50    

ok je t ai envoyé le prog sur ton adresse pavat@netcourrier.com  
 
utilise le comme ca :
prog fic.txt fic.csv

Reply

Marsh Posté le 12-11-2002 à 17:28:16    

ok merci je test

Reply

Marsh Posté le 12-11-2002 à 17:30:24    

Au fait c pas optimisé du tout , donc ca prendra un certain temps si tes fichiers sont gros (de l'ordre de 10 MO )
 
Il aurait fallu lire des segments dans le fichier plutot que de lire caractere par caractere mais bon ... ct pour te filer quelque chose. Si c est des gros fichiers (genre 100 MO) dit le moi je te ferai une petite modif pour que ce soit plus rapide.

Reply

Marsh Posté le 12-11-2002 à 17:34:20    

Ok merci c'est super cool !!
Ca marche
 
Les fichiers je ne sais pas si ils vont etre gros mais pour l'instant cela me va parfaitement..
 
Merci BCP

Reply

Marsh Posté le 12-11-2002 à 17:36:52    

de rien ;) je te conseille d apprendre le C car ca permet de depanner pour ce genre de chose (sous linux on peut faire sans en utilisant des commandes shells) et ca va assez vite a apprendre (en tout cas la base )

Reply

Marsh Posté le 12-11-2002 à 17:44:26    

Je pense que je vais m'y mettre.
 
Ps : Dans ton prog les espaces sont remplacé par des virgules.
Esce que c'est possible de remplacé tout les espaces par une seul virgules ??
 
Merci

Reply

Marsh Posté le 12-11-2002 à 17:49:30    

vi c possible mais la faut modifier le code, c est un peu plus compliqué ...

Reply

Marsh Posté le 12-11-2002 à 17:52:17    

Tu peux me le faire ??   :love:  
 
Y a t'il une autre solution sinon car je n'ai pas envie de t'embeter
 

Reply

Marsh Posté le 12-11-2002 à 17:56:10    

avec la commande for cela doit être possible
 

for /F "tokens=1,2,3 ..." %%a IN (.\fichier) do call :toto %%a %%b %%c %%d ...
goto :end
 
:toto
set data1=%1
set data2=%2
...
 
@echo %data1%;%data2%
goto :EOF
 
:end


 
ce n'est qu'un exemple il faut l'adapter et ça s'utilise en batch c mieux  :)


Message édité par Tilys le 12-11-2002 à 17:57:05

---------------
Donne invitations pour gmail - Je n'aime pas les cons et je n'ai pas envie de leur parler.
Reply

Marsh Posté le 12-11-2002 à 17:59:53    

C'est pas mal n'on plus mais bon c'est pas evident car la prog c'est pas trop mon truc et j'avou vue mon boulot je n'ai pas bcp de temps pour m'y mettre à fond.    :(  
 
Mais c'est sympas de m'aider !!

Reply

Marsh Posté le 12-11-2002 à 18:14:05    

pavat69 a écrit a écrit :

C'est pas mal n'on plus mais bon c'est pas evident car la prog c'est pas trop mon truc et j'avou vue mon boulot je n'ai pas bcp de temps pour m'y mettre à fond.    :(  
 
Mais c'est sympas de m'aider !!




 
sinon tu peux passer par excel tu importe le fichier en précisant que les séparateur sont des espaces et tu le réenregistre en csv


---------------
Donne invitations pour gmail - Je n'aime pas les cons et je n'ai pas envie de leur parler.
Reply

Marsh Posté le 12-11-2002 à 21:55:07    

Oui je sais ca, mais je veux le faire sous dos car il faut absolument que cela ce fasse en automatique pour etre injecter dans l'as 400. ( voir explication plus haut )
 

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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