Renommer des fichiers en fonction de variables

Nabab -  
 NababHop -
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

5 réponses

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
     
    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
    1. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929 > NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    3. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    4. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  2. Nabab
     
    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
  3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
     
    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
    1. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      C'est parfait. Je le testerai demain de retour au boulot. J'ai déjà quelques questions à te poser. Merci beaucoup
      0
      1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929 > NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
         
        Ok aujourd'hui boulot, je serai dispo à partir de 19h - 20h
        0
  4. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    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
    1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      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
    2. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    3. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      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
    4. NababHop Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    5. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 929
     
    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
    1. NababHop
       
      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