Bonjour,
J'ai un répertoire contenant des fichiers au format .csv qui sont créés par un logiciel de manière séquentielle (001.csv, 002.csv etc...).
Je voudrais réaliser un batch permettant d'ouvrir chaque fichier de ce répertoire, récupérer les information de la première ligne uniquement (Ou exclure les autres) et renommer le fichier en fonction de ce que j'ai récupéré.

Voici un exemple du contenu du fichier CSV à ma disposition:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
H;000093496499;0100;500;0;PC;
A;99;0100;500;0;PC;
C;6499;0100;500;0;PC;
Le but est donc d'avoir un fichier en sortie qui se nommera: ZCONF_000093496499_0100.csv au lieu de 001.csv

J'ai donc essayé de faire ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
cd\
echo on
set prefix=ZCONF_
FOR %%g IN (c:\*.csv) DO (FOR /F "eol=A tokens=2,3 delims=;" %%i in (%%g) DO set name=%%i_%%j)
pause
echo %%prefix%%%%name%%.csv
pause
Quand j'essaye en ligne de commande de manière plus simple cela marche très bien mais dans le .bat la ligne "echo %%prefix%%%%name%%.csv" plante.
Et j'ai essayé beaucoup de syntaxes...Et l'imbrication des 2 boucles FOR plante également...

Voici en ligne de commande:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
C:\>FOR /F "eol=A tokens=1,2,3 delims=;" %i in (c:\test.csv) DO set name=%j_%k
C:\>set name=000093496499_0100
C:\>set name=6499_0100

C:\>set prefix=ZCONF_

C:\>echo %prefix%%name%.csv
ZCONF_6499_0100.csv
Au détail près que je ne veux pas récupérer le contenu de la ligne commencant par "C" mais celle qui commence par "H"...
Mais si je copie tel quel (En mettant %% devant les variables car à ce que j'ai compris, dans un .bat c'est nécessaire) ca ne fonctionne pas.

Première question: est-ce que je peux dans la condition "eol" mettre plusieurs arguements?
Pourquoi ce qui fonctionne en ligne de commande ne fonctionne pas en .bat?

Autre question: comment imbriquer 2 boucles FOR? J'ai vu plein d'exemple avec des (instructions) apres le DO...moi ca plante directement...

Si quelqu'un a deja eu cette problématique et à un bout de code ou une piste à me proposer, ca m'aiderait beaucoup.

Merci d'avance