Renommer des fichiers en fonction de variables

Fermé
Nabab - 16 janv. 2018 à 13:32
 NababHop - 29 janv. 2018 à 13:46
Bonjour,

Je souhaiterais renommer des fichiers et des dossiers de mesures en fonction des noms et des dates de ces mesures. Pour chaque mesures quatre fichiers sont créer. Et on compte 25 mesures qui sont numéroter avec deux chiffres (##) de 01 à 25.

J'ai une arborescence initiale :
C:\Local\180111\0.10g_liant_03_09_47_53\Pos000\spectro_228-784_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\Pos000\spectro_244-311_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\Pos000\spectro_317-425_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\Pos000\spectro_757-944_æ.txt
Soit
C:\Local\AAMMJJ\nom_##_HH_MM_SS\Pos000\donnée_brute1_æ.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\Pos000\donnée_brute2_æ.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\Pos000\donnée_brute3_æ.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\Pos000\donnée_brute4_æ.txt

et je voudrais changer cela en :
C:\Local\180111\0.10g_liant_03_09_47_53\spectro_228-784_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\spectro_244-311_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\spectro_317-425_æ.txt
C:\Local\180111\0.10g_liant_03_09_47_53\spectro_757-944_æ.txt
Soit :
C:\Local\AAMMJJ\nom_##_HH_MM_SS\donnée_brute1_##.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\donnée_brute2_##.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\donnée_brute3_##.txt
C:\Local\AAMMJJ\nom_##_HH_MM_SS\donnée_brute4_##.txt

J'ai écris un code assez long puisque je ne sais pas encore utiliser les boucle FOR en Batch. Et je ne vous écris que la première ligne de chaque partie. Le premier "rename" de dossier ne fonctionne pas puisque je n'entre pas les valeurs HH, MM et SS. Et je voudrais qu'il fonctionne sans les entrer.



@echo off

SET /p date=Quelle est la date AAMMJJ de la mesure ? > 180111

SET /p nom=Quel est le nom de echantillon ? > 0.10g_liant

echo %date% > 180111
echo %nom% > 0.10g_liant

pause off

rename C:\Local\%date%\%nom%_01* C:\Local\%date%\%nom%_01

move C:\Local\%date%\%nom%_01\Pos000\spectro_228-784* C:\Local\%date%\%nom%_01


rmdir /s /q C:\Local\%date%\%nom%_01\Pos000

rename C:\Local\%date%\%nom%_01\spectro_228-784* C:\Local\%date%\%nom%_01\spectro_228-784_01.txt

echo Programme fini !!!

pause off




Merci pour l'aide que vous pourrez m'apporter.

Nabab
A voir également:

5 réponses

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 16 janv. 2018 à 23:34
Bonjour,

Voilà de quoi t'inspirer :

@echo off
setlocal enableextensions enabledelayedexpansion

cd C:\local
set /a nb=0

for /f "tokens=1-6 delims=\" %%A in ('dir /b /s "spectro*.txt"') do (
set fichier=%%~F
set /a nb+=1
echo !nb!# %%~F
if defined fichier (move "%%~A\%%~B\%%~C\%%~D\%%~E\%%~F" "%%~A\%%~B\%%~C\%%~D\%%~F" >nul)
)

echo. & pause



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
1
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
17 janv. 2018 à 10:14
Bonjour Barnabé,

Merci pour ta réponse.

J'ai testé ce script et je me suis retrouvé avec une nouvelle arborescence :
C:\Local\180111\0.15g_liant_14_10_07_41\spectro_228-784_µ.txt
C:\Local\180111\0.15g_liant_14_10_07_41\spectro_244-311_µ.txt
C:\Local\180111\0.15g_liant_14_10_07_41\spectro_317-425_µ.txt
C:\Local\180111\0.15g_liant_14_10_07_41\spectro_757-944_µ.txt
C:\Local\180111\0.15g_liant_14_10_07_41\Pos000

A la place de ça :

C:\Local\180111\0.15g_liant_##_HH_MM_SS\spectro_228-784_##.txt
C:\Local\180111\0.15g_liant_##_HH_MM_SS\spectro_244-311_##.txt
C:\Local\180111\0.15g_liant__##_HH_MM_SS\spectro_317-425_##.txt
C:\Local\180111\0.15g_liant_##_HH_MM_SS\spectro_757-944_##.txt

Et voilà ce que je vois :
- Le dossier Pos000 est toujours là.
- Les spectre.txt n'ont pas de numéro de mesure _## à la place du symbole µ.
- Et le dossier parent des données brutes contiennent encore l'heure de la mesure.

Il n'y a que le premier "rename" qui me pose problème. Quand je remplace :
rename C:\Local\%date%\%nom%_01* %nom%_01
par :
rename C:\Local\180111\0.15g_liant_##_HH_MM_SS %nom%_01
avec les numéro exact, alors tout le reste fonctionne.

Mais ça avance carrément. Hier soir avant de partir du travail je me suis arrêter sur une boucle FOR /F comme le tien mais en beaucoup plus rudimentaire puisque je n'ai pas les connaissances pour aller plus loin. J'ai remplacé ce rename qui pose problème par ceci :

dir /b C:\Local\%date%\ > liste.txt

FOR /f %%i IN (liste.txt) DO 
(
set j=%%i:~1,14
echo %%i
echo %%j
rename C:\Local\%date%\%%i %%j
)
pause


J'essaye de découper le nom du dossier que l'on trouve dans liste.txt pour extraire que les caractère du nom et du numéro de mesure mais ça ne marche pas. Il ne me renomme que le premier dossier en "%j".

Je continu les recherches. Si tu as d'autre idées, je suis preneur.

Est-ce que tu connais un débuggeur de script que je pourrais utiliser ?

Cordialement

Nabab
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908 > NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
Modifié le 17 janv. 2018 à 11:56
Malgré tes explications je n'avais pas tout compris à ce que tu voulais faire, maintenant je comprend mieux.

J'ai fait quelques corrections :

@echo off
setlocal enableextensions enabledelayedexpansion

cd C:\local
set /a nb=0

for /f "tokens=1-13 delims=\_" %%A in ('dir /b /s "spectro*.txt"') do (

set /a nb+=1
set test=%%~M

set destination=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F
set mesure=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I\%%~J\%%~K_%%~L_%%~M
set parent!nb!=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I

if not exist "!destination!" (mkdir "!destination!")

if defined test (
echo !nb!# %%~K_%%~L_%%~F.txt
move "!mesure!" "!destination!\%%~K_%%~L_%%~F.txt" >nul
)

)

for /L %%A in (1,1,!nb!) do (rmdir /S /Q "!parent%%A!" >nul 2>&1)

echo.
echo Programme fini !!!
pause
exit

Est-ce que c'est bon ou bien j'ai oublié quelque chose ?

Concernant ta dernière question tu peux utiliser PowerBatch :
https://www.commentcamarche.net/telecharger/developpement/18235-powerbatch/
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
17 janv. 2018 à 12:43
Est-ce qu'il est possible de retiré un nombre constant de caractère à une des variables pour le remplacer par exemple si je retire neuf caractère à 0.15g_liant_##_HH_MM_SS j'obtiens ceci 0.15g_liant_## et du coup je pourrais mettre un rename dans la boucle FOR.
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
17 janv. 2018 à 12:44
Puis quel est la différence entre %%A et %%~A ?

Désolé, je te pose plein de question parce que je ne trouve personne qui soit capable d'en parler avec moi.
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
17 janv. 2018 à 12:53
J'ai modifié ton code pour prendre en compte les variables nom et date et ça donne ça :
@echo off
setlocal enableextensions enabledelayedexpansion

SET /p date=Quelle est la date AAMMJJ de la mesure ?  

SET /p nom=Quel est le nom de echantillon ? 


cd C:\local\%date%
set /a nb=0

for /f "tokens=1-6 delims=\" %%A in ('dir /b /s "spectro*.txt"') do (
 echo on
 set fichier=%%~F
 set /a nb+=1
 echo !nb!
 if defined fichier (rename "%%~A\%%~B\%%~C\%%~D" "%nom%!nb!" )
 echo %%~A
 echo %%~B
 echo %%~C
 echo %%~D
 echo %%~E
 echo %%~F
pause off
)

echo. & pause


Mais la variable nb s'incrémente de 4 à chaque fois, pourtant set /a nb+=1 devrait la faire avancer de 1 à chaque boucle pas de 4.
0
rename C:\Local\%date%\%nom%_01* %nom%_01

move C:\Local\%date%\%nom%_25\Pos000\spectro_228-784* C:\Local\%date%\%nom%_25

rmdir /s /q C:\Local\%date%\%nom%_25\Pos000

rename C:\Local\%date%\%nom%_01\spectro_228-784* spectro_228-784_01.txt
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 17 janv. 2018 à 17:52
Voilà la version complète :

@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

:: -------------------------------------------------------
:: on demande les informations à traiter
:: -------------------------------------------------------

:QUESTION
cls

set "jour="
set "nom="

echo. & SET /p jour="Quelle est la date de la mesure ? [AAMMJJ] "
if not defined jour (goto :QUESTION)

echo. & SET /p nom="Quel est le nom de l'échantillon ? "
if not defined nom (goto :QUESTION)

cls & echo. & echo La date est [ %jour% ] et le nom de la mesure est [ %nom% ]

:: -------------------------------------------------------
:: on demande une confirmation des informations
:: -------------------------------------------------------

:REPONSE
set "reponse="
echo. & SET /p reponse="C'est votre dernier mot ? [OUI ou NON] "
iF %reponse% EQU OUI GOTO RENOMME
iF %reponse% EQU NON GOTO QUESTION
GOTO REPONSE

:: -------------------------------------------------------
:: on traite les données à renommer/déplacer
:: -------------------------------------------------------

:RENOMME
cls & echo.
cd C:\local\%jour%\%nom% || exit /B 1
set /a nb=0

for /f "tokens=1-13 delims=\_" %%A in ('dir /b /s "spectro*.txt"') do (

set /a nb+=1
set test=%%~M

set destination=%%~A\%%~B\%%~C\%%~D_%%~E_00\%%~K_%%~L
set mesure=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I\%%~J\%%~K_%%~L_%%~M
set parent!nb!=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I

if not exist "!destination!" (mkdir "!destination!")
if defined test (
echo !nb!# %%~K_%%~L_%%~F.txt ==^>^> mesure #%%~F
move "!mesure!" "!destination!\%%~K_%%~L_%%~F.txt" >nul
)

)

:: -------------------------------------------------------
:: on supprime le dossier qu'on a traité
:: -------------------------------------------------------

cd C:\local
for /L %%A in (1,1,!nb!) do (rmdir /s /q "!parent%%A!" >nul 2>&1)

:: -------------------------------------------------------
:: fin du programme
:: -------------------------------------------------------

echo.
echo Programme fini ^^!^^!^^!
echo. & pause

:: -------------------------------------------------------
:: on ouvre le dossier et on quitte le programme
:: -------------------------------------------------------

explorer /select,"C:\local\%jour%"
exit



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
17 janv. 2018 à 17:56
C'est parfait. Je le testerai demain de retour au boulot. J'ai déjà quelques questions à te poser. Merci beaucoup
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908 > NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
18 janv. 2018 à 05:36
Ok aujourd'hui boulot, je serai dispo à partir de 19h - 20h
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
19 janv. 2018 à 16:22
Salut Barnabé

Je me suis finalement arreter sur ce code :

ECHO OFF

:: ------------------------------------------------------------------------
:: on demande les informations à traiter
:: ------------------------------------------------------------------------

:QUESTION
cls
SET /p date=Quelle est la date AAMMJJ de la mesure ?			
SET /p nom=Quel est le nom de echantillon ? 				
cls

echo La date est %date%
echo et le nom de la mesure est %nom%






:: ------------------------------------------------------------------------
:: on demande une confirmation des informations
:: ------------------------------------------------------------------------

:REPONSE
SET /p reponse=Etes vous sure ? OUI ou NON			
iF %reponse% EQU OUI GOTO RENOMME
iF %reponse% EQU NON GOTO QUESTION
GOTO REPONSE





:: ------------------------------------------------------------------------
:: on traite les données à renommer/déplacer
:: ------------------------------------------------------------------------

:RENOMME
cls
cd C:\local\%date%
set /a nb=00

for /f "tokens=1-6 delims=_" %%A in ('dir /b "%nom%*"') do (

rename "%%~A_%%~B_%%~C_%%~D_%%~E_%%~F" "%nom%_%%~C" 

move C:\local\%date%\%nom%_%%~C\Pos000\spectro*.txt C:\local\%date%\%nom%_%%~C

rmdir C:\local\%date%\%nom%_%%~C\Pos000

rename C:\local\%date%\%nom%_%%~C\spectro?????????*.txt spectro?????????%%~C.txt

)

GOTO NOUVELLE_QUESTION






:: ------------------------------------------------------------------------
:: on regroupe les donnees par etendue de spectre et nom d'echantillon
:: ------------------------------------------------------------------------

:REGROUPER
cd C:\Local\%date%

cls

for /f "tokens=1-9 delims=\_" %%A in ('dir /b /s "spectro*.txt"') do (


if not exist destination (mkdir %%~A\%%~B\%%~C\%%~D_%%~E_00\%%~G_%%~H)

copy %%~A\%%~B\%%~C\%%~D_%%~E_%%~F\%%~G_%%~H_%%~I %%~A\%%~B\%%~C\%%~D_%%~E_00\%%~G_%%~H

)

GOTO FIN





:: ------------------------------------------------------------------------
:: doit-on renommer d'autre fichier ?
:: ------------------------------------------------------------------------

:NOUVELLE_QUESTION
cls
echo Les donnees de %nom% ont été traité avec succès.

set /p reponse= Voulez-vous renommer d'autres fichiers ? OUI ou NON		

IF %reponse% EQU OUI GOTO QUESTION 
IF %reponse% EQU NON GOTO SUITE_QUESTION
GOTO NOUVELLE_QUESTION





:: ------------------------------------------------------------------------
:: doit-on regroupe les donnees par etendue de spectre et nom d'echantillon
:: ------------------------------------------------------------------------

:SUITE_QUESTION
set /p reponse= Voulez-vous regrouper les donnees par etendue de spectre ?		
IF %reponse% EQU OUI GOTO REGROUPER
GOTO FIN





:: ------------------------------------------------------------------------
:: fin de programme
:: ------------------------------------------------------------------------

:FIN
cls
echo Votre programme est termine !!!
echo. & pause


Il est plutôt basique mais je suis capable de l'expliquer au collègues de bureau.

Je passe maintenant à la partie traitement de donnée. Avant de passer ça sur Excel j'aimerais créer un fichier qui reprend toutes les données de mesures des autres fichiers. Dans les spectro*.txt il y a deux colonnes :
- Longueur d'onde
- Intensité de signal

Il faut que je fasse un fichier dans lesquelles on trouvera une colonne longueur d'onde et 25 colonnes d'intensité de signal.

Je vais chercher ça.

Si tu as des idées, je suis preneur.

Merci encore pour ton aide.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
19 janv. 2018 à 22:40
Désolé je ne comprend pas les données du problème.

Pourquoi un fichier avec une colonne longueur d'onde et 25 colonnes d'intensité de signal alors qu'il y a, à priori, une centaine de fichiers texte (25 mesures x 4 fichiers) ?
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
22 janv. 2018 à 10:09
Je fais des mesures avec quatre spectromètres en simultanés sur quatre différentes étendues. Donc pour chaque mesures, je reçois quatre fichiers qui correspondent aux données des quatre spectromètres.
Je fais 25 fois la mesures par échantillon donc je me retrouve avec vingt cinq fois quatre fichiers. Or pour analyser ces données je suis obligé de les trier par échantillon (normal) puis par étendu de spectre. Puisque mes analyses se font bien sur une étendue de spectre défini par un spectromètre et que je ne peux pas mélanger des données venant d'outils avec des résolutions et des incertitudes différentes.
Donc pour chaque étendues de spectre, je dois créer un fichier qui regroupe toutes les données d'intensité de signal de l'échantillon que j'étudie.

Je vais essayer de faire une macro sur Excel pour faire ça mais je ne brille pas plus en Batch qu'en VBA. Je pense quand même que ça fais partie du traitement par lot et je devrai le faire en Batch mais je ne sais pas si on peut manipuler du contenu de .txt en batch.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 22 janv. 2018 à 22:47
Oui le batch est totalement adapté au traitement par lot.

Je n'ai pas le temps de tester mais ça devrait le faire :


setlocal enableextensions enabledelayedexpansion

cd C:\local\%date%\%nom%

for /f "tokens=*" %%A in ('dir /b /ad') do (
pushd %%~A
for /f "tokens=*" %%P in ('dir /b "spectro*.txt"') do (call :traitement "%%~P")
echo !onde! !signal! >> recapitulatif.txt
popd
)
exit

:traitement
for /f "usebackq tokens=1,*" %%T in ("%~1") do (
set onde=%%T
set signal=!signal! %%U
)
goto :eof

rem

A rajouter vers la fin de ton script.

ps : la variable %DATE% existe déjà, c'est une variable d'environnement, pour éviter les ennuis tu devrais utiliser un autre nom pour ta variable.
0
NababHop Messages postés 13 Date d'inscription mardi 16 janvier 2018 Statut Membre Dernière intervention 25 janvier 2018
23 janv. 2018 à 09:59
Salut Barnabe.

J'ai essayé ton code mais il me sort un fichier récapitulatif dans lequel ceci est écrit :
"Commande ECHO activ‚e."
Et je n'arrive pas à le lire le code que tu me passe.
Je travaille en ce moment avec un collègue de bureau pour traiter ça en VBA mais ça serait bien plus simple pour moi de le faire en batch.

J'ai essayé de sortir un petit truc dans un répertoire de données :


for /f "tokens=1,2 delims= 	" %%i in ('type *.txt') do echo %%i %%j>> fichierSortie.cvs



Et ça m'a bien compilé mes données mais en deux colonnes avec 52100 ligne à la place des 2048 lignes sur 26 colonnes.

C'est un petit début mais on avance.
0
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
23 janv. 2018 à 19:18
Est-ce que tu peux me passer tes fichiers textes pour que je puisse faire des tests ?

Si oui tu peux déposer les fichiers sur mon site et me fournir le lien pour les télécharger :
https://jirafeau.murky-lane.top/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
Modifié le 27 janv. 2018 à 19:12
Voilà j'ai enfin terminé, j'espère que ça te plaira :

@echo off
mode con: cols=80 lines=30
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul
title Spectromètre


:: -------------------------------------------------------
:: on demande les informations à traiter
:: -------------------------------------------------------

:QUESTION
set "jour="
set "nom="

cls & echo. & SET /p jour="Quelle est la date de la mesure ? [AAMMJJ] "
if not defined jour (goto :QUESTION)

echo. & SET /p nom="Quel est le nom de l'échantillon ? "
if not defined nom (goto :QUESTION)

cls & echo. & echo La date est [ %jour% ] et le nom de la mesure est [ %nom% ]


:: -------------------------------------------------------
:: on demande une confirmation des informations
:: -------------------------------------------------------

:REPONSE
set "reponse="
echo. & SET /p reponse="C'est votre dernier mot ? [OUI ou NON] "
iF %reponse% EQU OUI GOTO RENOMME
iF %reponse% EQU NON GOTO QUESTION
GOTO REPONSE


:: -------------------------------------------------------
:: on traite les données à renommer/déplacer
:: -------------------------------------------------------

:RENOMME
set heureDebut=%time:~0,2%h%time:~3,2%m%time:~6,2%
set jourDebut=%date%

cls & echo.
cd /d C:\local\%jour%\%nom% || exit /B 1
set /a nb=0

for /f "tokens=1-13 delims=\_" %%A in ('2^>nul dir /b /s "spectro*.txt"') do (

set /a nb+=1
set test=%%~M

set echantillon=%%~A\%%~B\%%~C\%%~D_%%~E_00
set destination=%%~A\%%~B\%%~C\%%~D_%%~E_00\%%~K_%%~L
set mesure=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I\%%~J\%%~K_%%~L_%%~M
set parent!nb!=%%~A\%%~B\%%~C\%%~D_%%~E_%%~F_%%~G_%%~H_%%~I

if not exist "!destination!" (mkdir "!destination!")
if defined test (
echo !nb!# %%~K_%%~L_%%~F.txt ==^>^> mesure #%%~F
move "!mesure!" "!destination!\%%~K_%%~L_%%~F.txt" >nul
)
)


:: -------------------------------------------------------
:: on supprime le dossier qu'on a traité
:: -------------------------------------------------------

cd C:\local
for /L %%A in (1,1,!nb!) do (rmdir /s /q "!parent%%A!" >nul 2>&1)


:: -------------------------------------------------------
:: on synthétise toutes les mesures de l'échantillon
:: -------------------------------------------------------

cd !echantillon! || exit /B 1

for /f "tokens=*" %%A in ('dir /b /ad') do (
if exist "%%~A.txt" (del /f /q "%%~A.txt")
cls & pushd %%~A

for /f "tokens=*" %%P in ('2^>nul dir /b "spectro*.txt"') do (call :tableau "%%~P")

for /L %%E in (1,1,2048) do (call :synthese %%E "%%~A")

popd
)


:: -------------------------------------------------------
:: fin du programme
:: -------------------------------------------------------

cls & echo.
echo Programme terminé ^^!^^!^^!
echo.
set heureFin=%time:~0,2%h%time:~3,2%m%time:~6,2%
set jourFin=%date%
echo le traitement a commencé le !jourDebut! à !heureDebut!
echo le traitement s'est terminé le !jourFin! à !heureFin!
echo. & pause
exit


:: -------------------------------------------------------
:: fonction pour fabriquer un tableau en 3 dimensions
:: -------------------------------------------------------

:tableau
set /a num=0
echo. & echo [ %~1 ] ==^>^> Indexation des résultats

for /f "usebackq tokens=1,2" %%T in ("%~1") do (
set /a num+=1
set "wave=%%T "
set onde!num!_%~n1=!wave:~0,16!
set "cue=%%U "
set signal!num!_%~n1=!cue:~0,10!
)

goto :eof


:: -------------------------------------------------------------
:: fonction pour fabriquer une synthèse à partir du tableau
:: -------------------------------------------------------------

:synthese
set "line="

for /f "tokens=*" %%P in ('2^>nul dir /b "spectro*.txt"') do (
set line=!line! # !signal%1_%%~nP!
set onde=!onde%1_%%~nP!
)

echo !onde! !line! >> ..\%~2.txt
cls
echo. & echo Echantillon : %nom%
echo. & echo Spectromètre : %~2
echo. & echo Synthèse en cours d'élaboration : ligne [%1] sur 2048

goto :eof

rem il faut toujours laisser une ligne vide après GOTO:EOF

Je te préviens la deuxième partie avec le tableau est vraiment longue, genre 6 heures sur ma machine, j'espère que la tienne est plus rapide ;)


0
Merci Barnabé !!

6 heures juste pour les fichiers que je t'ai passé ?
Ca semble énorme !!!
Je vais tenter ça

Merci pur ton aide
0