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:
Le but est donc d'avoir un fichier en sortie qui se nommera: ZCONF_000093496499_0100.csv au lieu de 001.csv
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;
J'ai donc essayé de faire ceci:
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.
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
Et j'ai essayé beaucoup de syntaxes...Et l'imbrication des 2 boucles FOR plante également...
Voici en ligne de commande:
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"...
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
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
Partager