modification et transformation d'un fichier CSV pour importation
42 réponses
---DGI972---
bonjour
Je dois faire un VBScript qui qui doit transformer et suprimer des
valeurs dans un fichier csv.
Issue d'une exportation d'un logiciel le fichier a traiter est de la
forme:
"D:\EXPORT\image0001.tif";"JEAN";"VALJEAN"
"D:\EXPORT\image0002.tif";"LOUIS";"GEORGES"
"D:\EXPORT\image0003.tif";"FELIX";LOUIS"
pour l'importer dans un autre logicel il faut que que le fichier soit
de la forme:
Il faut donc mettre le premier champ à la fin et suprimer le chemin
D:\EXPORT\ dans le premier champ.
je ne vois pas par quel bout prendre ce problème et je vous solicite
pour un début d'analyse.
un split dans un tableau puis un remplacement de D:\EXPORT\ par rien ?
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | oui oui vous avez raison la syntaxe a changée: | | "FILENAME","Num_Client","DATE","Num_Relv" | "D:TEMPRUBISFACT 08-06-06.TIF","112242","MAI 2006","000003" | "D:TEMPRUBISFACT 08-06-061.TIF","112242","MAI 2006","000003" | | mais le pb est plus compliqué, la première ligne est à jeter à la | poubelle et le non du fichier de sortie doit être index.dat | dans l'ordre 2 3 4 1 | merci
Une version optimisée en deux lignes seulement :
1. @echo off 2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv) do @echo %%j,%%k,%%l,"%%~nxi"
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:mn.f2cb7d6634d10bb1.33554@NOSPAMlaposte.net
| oui oui vous avez raison la syntaxe a changée:
|
| "FILENAME","Num_Client","DATE","Num_Relv"
| "D:TEMPRUBISFACT 08-06-06.TIF","112242","MAI 2006","000003"
| "D:TEMPRUBISFACT 08-06-061.TIF","112242","MAI 2006","000003"
|
| mais le pb est plus compliqué, la première ligne est à jeter à la
| poubelle et le non du fichier de sortie doit être index.dat
| dans l'ordre 2 3 4 1
| merci
Une version optimisée en deux lignes seulement :
1. @echo off
2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv)
do @echo %%j,%%k,%%l,"%%~nxi"
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | oui oui vous avez raison la syntaxe a changée: | | "FILENAME","Num_Client","DATE","Num_Relv" | "D:TEMPRUBISFACT 08-06-06.TIF","112242","MAI 2006","000003" | "D:TEMPRUBISFACT 08-06-061.TIF","112242","MAI 2006","000003" | | mais le pb est plus compliqué, la première ligne est à jeter à la | poubelle et le non du fichier de sortie doit être index.dat | dans l'ordre 2 3 4 1 | merci
Une version optimisée en deux lignes seulement :
1. @echo off 2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv) do @echo %%j,%%k,%%l,"%%~nxi"
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
---DGI972---
Gilles LAURENT avait écrit le 30/06/2006 :
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news:
mais le pb est plus compliqué, la première ligne est à jeter à la poubelle et le non du fichier de sortie doit être index.dat dans l'ordre 2 3 4 1 merci
Une version optimisée en deux lignes seulement :
1. @echo off 2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv) do @echo %%j,%%k,%%l,"%%~nxi"
Super les 2 versions fonctionnent. La version optimisée va 2 fois plus vite (temps d'ouverture de la fenêtre DOS) Je vais l'integrer dans un VBScript car le fichier d'entrée change et je dois le passer en paramètre. Merci merci encore
Gilles LAURENT avait écrit le 30/06/2006 :
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:mn.f2cb7d6634d10bb1.33554@NOSPAMlaposte.net
mais le pb est plus compliqué, la première ligne est à jeter à la
poubelle et le non du fichier de sortie doit être index.dat
dans l'ordre 2 3 4 1
merci
Une version optimisée en deux lignes seulement :
1. @echo off
2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv)
do @echo %%j,%%k,%%l,"%%~nxi"
Super les 2 versions fonctionnent.
La version optimisée va 2 fois plus vite (temps d'ouverture de la
fenêtre DOS)
Je vais l'integrer dans un VBScript car le fichier d'entrée change et
je dois le passer en paramètre.
Merci merci encore
mais le pb est plus compliqué, la première ligne est à jeter à la poubelle et le non du fichier de sortie doit être index.dat dans l'ordre 2 3 4 1 merci
Une version optimisée en deux lignes seulement :
1. @echo off 2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv) do @echo %%j,%%k,%%l,"%%~nxi"
Super les 2 versions fonctionnent. La version optimisée va 2 fois plus vite (temps d'ouverture de la fenêtre DOS) Je vais l'integrer dans un VBScript car le fichier d'entrée change et je dois le passer en paramètre. Merci merci encore
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | Super les 2 versions fonctionnent. | La version optimisée va 2 fois plus vite (temps d'ouverture de la | fenêtre DOS) | Je vais l'integrer dans un VBScript car le fichier d'entrée change et | je dois le passer en paramètre. | Merci merci encore
Voici l'ultime version avec passage du fichier d'entrée comme argument :-) Vous remarquerez que le script tient sur une seule ligne
1. @for /f "skip=1 tokens=1-4 delims=," %%i in (%1) do @echo %%j,%%k,%%l,"%%~nxi"
Pour l'exécution : Si le fichier d'entrée est c:temprubisfact1.csv alors : >test.cmd c:temprubisfact1.csv > c:temprubisindex1.dat
Si le fichier d'entrée est c:temprubisfact2.csv alors : >test.cmd c:temprubisfact2.csv > c:temprubisindex2.dat
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:mn.f3587d662e7d655d.33554@NOSPAMlaposte.net
| Super les 2 versions fonctionnent.
| La version optimisée va 2 fois plus vite (temps d'ouverture de la
| fenêtre DOS)
| Je vais l'integrer dans un VBScript car le fichier d'entrée change et
| je dois le passer en paramètre.
| Merci merci encore
Voici l'ultime version avec passage du fichier d'entrée comme argument
:-)
Vous remarquerez que le script tient sur une seule ligne
1. @for /f "skip=1 tokens=1-4 delims=," %%i in (%1) do @echo
%%j,%%k,%%l,"%%~nxi"
Pour l'exécution :
Si le fichier d'entrée est c:temprubisfact1.csv alors :
>test.cmd c:temprubisfact1.csv > c:temprubisindex1.dat
Si le fichier d'entrée est c:temprubisfact2.csv alors :
>test.cmd c:temprubisfact2.csv > c:temprubisindex2.dat
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | Super les 2 versions fonctionnent. | La version optimisée va 2 fois plus vite (temps d'ouverture de la | fenêtre DOS) | Je vais l'integrer dans un VBScript car le fichier d'entrée change et | je dois le passer en paramètre. | Merci merci encore
Voici l'ultime version avec passage du fichier d'entrée comme argument :-) Vous remarquerez que le script tient sur une seule ligne
1. @for /f "skip=1 tokens=1-4 delims=," %%i in (%1) do @echo %%j,%%k,%%l,"%%~nxi"
Pour l'exécution : Si le fichier d'entrée est c:temprubisfact1.csv alors : >test.cmd c:temprubisfact1.csv > c:temprubisindex1.dat
Si le fichier d'entrée est c:temprubisfact2.csv alors : >test.cmd c:temprubisfact2.csv > c:temprubisindex2.dat
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Méta-MCI
Bonsoir !
Moi pas comprendre. Le problème posé consiste à inverser l'ordre d'affichage de trois champs, donc forcément, le nombre de champs est figé. Tu fais bien la même chose dans ton script, non?
En pratique, DGI972 est déjà passé à 4 champs, bousillant, du même coup, l'analyse de Gilles, et la tienne. Normal, puisque le cahier des charges a changé.
Mon script prend la première colonne (1er champ), et le met en dernière position. Indépendamment du nombre de champs. Et ça marche, même une ligne a un champ de plus, ou de moins. Cela est dû au fait que Python peut adresser les séquences à partir du début (>0) ou de la fin (<0) ; ainsi lig[-1] est le premier élément en commençant par la fin. Comme tu as installé Python, tu pourrais d'ailleurs essayer le script, si tu t'ennuies (il paraît que, en été, la fréquence des réunions baisse chez MS).
Ceci étant, on ne peut pas utiliser directement le script dans PeJBshell. On est obligé, soit d'appeler un fichier externe (comme une cooommmandelletteeeeee ?), soit d'exécuter le script, à partir d'une chaîne de caractères.
@+
MCI
Bonsoir !
Moi pas comprendre. Le problème posé consiste à inverser l'ordre
d'affichage de trois champs, donc forcément, le nombre de champs est
figé. Tu fais bien la même chose dans ton script, non?
En pratique, DGI972 est déjà passé à 4 champs, bousillant, du même coup,
l'analyse de Gilles, et la tienne. Normal, puisque le cahier des charges a
changé.
Mon script prend la première colonne (1er champ), et le met en dernière
position. Indépendamment du nombre de champs. Et ça marche, même une ligne a
un champ de plus, ou de moins.
Cela est dû au fait que Python peut adresser les séquences à partir du début
(>0) ou de la fin (<0) ; ainsi lig[-1] est le premier élément en commençant
par la fin.
Comme tu as installé Python, tu pourrais d'ailleurs essayer le script, si tu
t'ennuies (il paraît que, en été, la fréquence des réunions baisse chez MS).
Ceci étant, on ne peut pas utiliser directement le script dans PeJBshell. On
est obligé, soit d'appeler un fichier externe (comme une
cooommmandelletteeeeee ?), soit
d'exécuter le script, à partir d'une chaîne de caractères.
Moi pas comprendre. Le problème posé consiste à inverser l'ordre d'affichage de trois champs, donc forcément, le nombre de champs est figé. Tu fais bien la même chose dans ton script, non?
En pratique, DGI972 est déjà passé à 4 champs, bousillant, du même coup, l'analyse de Gilles, et la tienne. Normal, puisque le cahier des charges a changé.
Mon script prend la première colonne (1er champ), et le met en dernière position. Indépendamment du nombre de champs. Et ça marche, même une ligne a un champ de plus, ou de moins. Cela est dû au fait que Python peut adresser les séquences à partir du début (>0) ou de la fin (<0) ; ainsi lig[-1] est le premier élément en commençant par la fin. Comme tu as installé Python, tu pourrais d'ailleurs essayer le script, si tu t'ennuies (il paraît que, en été, la fréquence des réunions baisse chez MS).
Ceci étant, on ne peut pas utiliser directement le script dans PeJBshell. On est obligé, soit d'appeler un fichier externe (comme une cooommmandelletteeeeee ?), soit d'exécuter le script, à partir d'une chaîne de caractères.
je n'ai pas encore réussi en lancer la dernière version (en une seule ligne).
Un grand merci
---DGI972---
Gilles LAURENT
"Méta-MCI" a écrit dans le message de news: | C'est bô ! | (avis perso) | | | MCI
Merci beaucoup.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Méta-MCI" <enleverlesX.XmcX@XmclaveauX.com> a écrit dans le message de
news:OCrfk1HnGHA.4452@TK2MSFTNGP05.phx.gbl
| C'est bô !
| (avis perso)
|
|
| MCI
Merci beaucoup.
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Méta-MCI" a écrit dans le message de news: | C'est bô ! | (avis perso) | | | MCI
Merci beaucoup.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | je confirme du grand ART | | je n'ai pas encore réussi en lancer la dernière version (en une seule | ligne). | | Un grand merci | | ---DGI972---
Merci beaucoup. Tenez-moi au courant.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:mn.f3b57d66f8786157.33554@NOSPAMlaposte.net
| je confirme du grand ART
|
| je n'ai pas encore réussi en lancer la dernière version (en une seule
| ligne).
|
| Un grand merci
|
| ---DGI972---
Merci beaucoup.
Tenez-moi au courant.
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | je confirme du grand ART | | je n'ai pas encore réussi en lancer la dernière version (en une seule | ligne). | | Un grand merci | | ---DGI972---
Merci beaucoup. Tenez-moi au courant.
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
---DGI972---
Le 30/06/2006, Méta-MCI a supposé :
C'est bô ! (avis perso)
MCI
je confirme du grand ART
je n'ai pas encore réussi en lancer la dernière version (en une seule ligne).
Un grand merci
---DGI972---
j'ai trouvé le Pb: le nom long Avec un petit bat suplémentaire
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | j'ai trouvé le Pb: | le nom long | Avec un petit bat suplémentaire | | Copy D:TEMPRUBISFACT*.CSV D:TEMPRUBISFACT.CSV | CMD /E:ON /C C:RUBISbatch.cmd D:TEMPRUBISFACT.CSV > | D:TEMPRUBISindex.dat | DEL D:TEMPRUBISFACT.CSV | | Un grand merci encore
Une petite correction s'impose :
1. @for /f "skip=1 tokens=1-4 delims=," %%i in ('type %1') do @echo %%j,%%k,%%l,"%%~nxi"
Pour l'exécution : >test.cmd "c:temprubisfact espace .csv" > c:temprubisindex.dat
Notez la présence des guillemets autour du nom long
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:mn.f3f57d6668c81ba4.33554@NOSPAMlaposte.net
| j'ai trouvé le Pb:
| le nom long
| Avec un petit bat suplémentaire
|
| Copy D:TEMPRUBISFACT*.CSV D:TEMPRUBISFACT.CSV
| CMD /E:ON /C C:RUBISbatch.cmd D:TEMPRUBISFACT.CSV >
| D:TEMPRUBISindex.dat
| DEL D:TEMPRUBISFACT.CSV
|
| Un grand merci encore
Une petite correction s'impose :
1. @for /f "skip=1 tokens=1-4 delims=," %%i in ('type %1') do @echo
%%j,%%k,%%l,"%%~nxi"
Pour l'exécution :
>test.cmd "c:temprubisfact espace .csv" > c:temprubisindex.dat
Notez la présence des guillemets autour du nom long
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de news: | j'ai trouvé le Pb: | le nom long | Avec un petit bat suplémentaire | | Copy D:TEMPRUBISFACT*.CSV D:TEMPRUBISFACT.CSV | CMD /E:ON /C C:RUBISbatch.cmd D:TEMPRUBISFACT.CSV > | D:TEMPRUBISindex.dat | DEL D:TEMPRUBISFACT.CSV | | Un grand merci encore
Une petite correction s'impose :
1. @for /f "skip=1 tokens=1-4 delims=," %%i in ('type %1') do @echo %%j,%%k,%%l,"%%~nxi"
Pour l'exécution : >test.cmd "c:temprubisfact espace .csv" > c:temprubisindex.dat
Notez la présence des guillemets autour du nom long
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD