OVH Cloud OVH Cloud

modification et transformation d'un fichier CSV pour importation

42 réponses
Avatar
---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:

"JEAN";"VALJEAN";"image0001.tif"
"LOUIS";"GEORGES";"image0002.tif"
"FELIX";LOUIS";"image0003.tif"

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 ?

merci d'avance

10 réponses

1 2 3 4 5
Avatar
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
| Désolé, mais je n'ai pas réussi a sortir une seule ligne et même pas
| le fichier de sortie (même vide).
| J'ai essayé de debugger le cmd et j'ai un message %%i attendue !!

Heu, quel était le message d'erreur avant la phase de debugging ?
Ce script est opérationnel et testé sur W2K SP3/SP4, XP /SP1/SP2, W2K3
/SP1
Un autre version ?

Pouvez-vous essayer de lancer le script avec la syntaxe suivante :
>cmd /E:on /c batch.cmd

Bien sûr, le fichier csvin.txt doit se situer dans le répertoire courant

Tenez moi au courant.

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
| Désolé, mais je n'ai pas réussi a sortir une seule ligne et même pas
| le fichier de sortie (même vide).
| J'ai essayé de debugger le cmd et j'ai un message %%i attendue !!

Avez-vous bien copié le code dans un fichier .cmd, par exemple test.cmd
?
J'ai l'impression que vous essayez d'exécuter le code sur l'invite de
commandes :-(
Et forcément, dans ce cas, ça ne fonctionne pas ! (%%i était inattendu)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
---DGI972---
Gilles LAURENT a présenté l'énoncé suivant :
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
Désolé, mais je n'ai pas réussi a sortir une seule ligne et même pas
le fichier de sortie (même vide).
J'ai essayé de debugger le cmd et j'ai un message %%i attendue !!


Avez-vous bien copié le code dans un fichier .cmd, par exemple test.cmd
?
J'ai l'impression que vous essayez d'exécuter le code sur l'invite de
commandes :-(
Et forcément, dans ce cas, ça ne fonctionne pas ! (%%i était inattendu)


Je réponds à vos 2 fils succésifs :

XP pro SP2
avec la commande
cmd /E:on /C D:TEMPRUBISbatch.cmd > D:TEMPRUBISindex.dat

j'ai bien un fichier index.dat mais vide

voici le contenu de batch.cmd
@echo off
for /f "tokens=1-3 delims=;" %%i in (C:TEMPRUBISFACT.CSV) do (for /f
"tokens=3 delims=" %%L in ('echo %%i') do @echo %%j;%%k;"%%L)

j'ai plus de message d'erreur
mais le fichier reste vide

merci


Avatar
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
| voici le contenu de batch.cmd
| @echo off
| for /f "tokens=1-3 delims=;" %%i in (C:TEMPRUBISFACT.CSV) do (for
| /f "tokens=3 delims=" %%L in ('echo %%i') do @echo %%j;%%k;"%%L)
|
| j'ai plus de message d'erreur
| mais le fichier reste vide
|
| merci

La syntaxe n'est pas correcte car le script devrait tenir sur quatre
ligne :

1. @echo off
2. for /f "tokens=1-3 delims=;" %%i in (C:TEMPRUBISFACT.CSV) do (
3. for /f "tokens=3 delims=" %%L in ('echo %%i') do @echo %%j;%%k;"%%L
4. )

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
---DGI972---
Gilles LAURENT a exposé le 30/06/2006 :
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
voici le contenu de batch.cmd
@echo off
for /f "tokens=1-3 delims=;" %%i in (C:TEMPRUBISFACT.CSV) do (for
/f "tokens=3 delims=" %%L in ('echo %%i') do @echo %%j;%%k;"%%L)

j'ai plus de message d'erreur
mais le fichier reste vide

merci


La syntaxe n'est pas correcte car le script devrait tenir sur quatre
ligne :

1. @echo off
2. for /f "tokens=1-3 delims=;" %%i in (C:TEMPRUBISFACT.CSV) do (
3. for /f "tokens=3 delims=" %%L in ('echo %%i') do @echo %%j;%%k;"%%L
4. )


Mon fichier de test possède 1360 ligne et j'obtiens en sortie un
fichier index.dat avec 1360 fois les lignes ci-dessous

;;"RUBIS
;;"RUBIS
;;"RUBIS
;;"RUBIS


Avatar
Gilles LAURENT
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
| Mon fichier de test possède 1360 ligne et j'obtiens en sortie un
| fichier index.dat avec 1360 fois les lignes ci-dessous
|
| ;;"RUBIS
| ;;"RUBIS
| ;;"RUBIS
| ;;"RUBIS

La syntaxe du fichier de test est-elle EXACTEMENT la même que celle
indiquée dans votre message initial ? Pouvez-vous me donner la syntaxe
de votre fichier de test ?

Pour rappel, la syntaxe initiale était la suivante :
"D:EXPORTimage0001.tif";"JEAN";"VALJEAN"

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
---DGI972---
Gilles LAURENT avait énoncé :
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
Mon fichier de test possède 1360 ligne et j'obtiens en sortie un
fichier index.dat avec 1360 fois les lignes ci-dessous

;;"RUBIS
;;"RUBIS
;;"RUBIS
;;"RUBIS


La syntaxe du fichier de test est-elle EXACTEMENT la même que celle
indiquée dans votre message initial ? Pouvez-vous me donner la syntaxe
de votre fichier de test ?

Pour rappel, la syntaxe initiale était la suivante :
"D:EXPORTimage0001.tif";"JEAN";"VALJEAN"


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

merci


Avatar
Gilles LAURENT
"---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
|
| merci

Forcement ça change tout ! (le séparateur n'est plus ';' et il y a
quatre colonnes)
Dans quel ordre souhaitez-vous réorganiser les colonnes 1 2 3 4 ?

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
---DGI972---
Gilles LAURENT a formulé ce vendredi :
"---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

merci


Forcement ça change tout ! (le séparateur n'est plus ';' et il y a
quatre colonnes)
Dans quel ordre souhaitez-vous réorganiser les colonnes 1 2 3 4 ?


dans l'ordre 2 3 4 1
merci


Avatar
Gilles LAURENT
"---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

Voilà :

1. @echo off
2. for /f "skip=1 tokens=1-4 delims=," %%i in (c:temprubisfact.csv)
do (
3. for /f "tokens=4 delims=" %%m in ('echo %%i') do @echo
%%j,%%k,%%l,"%%m
4. )

Pour l'exécution :
>test.cmd > c:temprubisindex.dat

Le fichier de sortie index.dat sera de la forme suivante :
"112242","MAI 2006","000003","FACT 08-06-06.TIF"

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
1 2 3 4 5