Bonjour à tous,
Je suis un p'tit nouveau sur le forum !
Je viens de démarrer la programmation batch, et je coince sérieux sur un problême incompréhensible :
Mon objectif est de modifier des tags dans une liste de fichiers DICOM
J'utilise pour cela des executables qui me permettent des les éditer via la console.
voilà le code
Explication :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 set D=1000 for %%f in (*.dcm) do ( for /f "delims=" %%a in ('dcmdump.exe +P "0010,0010" %%f ^|tr -s " " ";" ^|cut -d ";" -f 3 ^| tr -d [] ^| cut -d "_" -f 2') do ( set M=%%a ) for /f "delims=" %%a in ('dcmdump.exe +P "0010,0020" %%f ^|tr -s " " ";" ^|cut -d ";" -f 3 ^| tr -d [] ^| cut -d "_" -f 3') do ( set F=%%a ) dcmodify.exe -m "(0010,0010)=%D%_%M%_%F%" %%f dcmodify.exe -m "(0010,0020)=%D%_%M%_%F%" %%f )
Cette ligne me renvoie 4 chiffres. Cette commande fonctionne sans souci (la suivante également, c'est juste l'ID du tag qui change)
Code : Sélectionner tout - Visualiser dans une fenêtre à part dcmdump.exe +P "0010,0010" %%f ^|tr -s " " ";" ^|cut -d ";" -f 3 ^| tr -d [] ^| cut -d "_" -f 2
Ces 4 chiffres je les stocke respectivement dans les variables M et F :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for /f "delims=" %%a in ('dcmdump.exe +P "0010,0010" %%f ^|tr -s " " ";" ^|cut -d ";" -f 3 ^| tr -d [] ^| cut -d "_" -f 2') do ( set M=%%a ) for /f "delims=" %%a in ('dcmdump.exe +P "0010,0020" %%f ^|tr -s " " ";" ^|cut -d ";" -f 3 ^| tr -d [] ^| cut -d "_" -f 3') do ( set F=%%a )
Jusque là ça fonctionne quand je le fais un à un.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 dcmodify.exe -m "(0010,0010)=%D%_%M%_%F%" %%f dcmodify.exe -m "(0010,0020)=%D%_%M%_%F%" %%f
Là ou ça coince, c'est quand je veux qu'il me le fasse pour chaque fichier (sachant que chaque fois il doit récupérer un tag unique pour M et F). D est fixe du début à la fin. Je fais donc une double boucle for et voilà ce que me crache la console avec 2 fichiers DICOM (extension .dcm)
http://imageshack-france.com/show.ph...batch.JPG.html
Les variables M et F ne sont pas remplacé tout de suite ! Il m'execute d'abord la boucle sans prendre en compte les variables
concretement j'ai ça :
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part dcmodify.exe -m "(0010,0010)=1000__" %%f
Code : Sélectionner tout - Visualiser dans une fenêtre à part dcmodify.exe -m "(0010,0010)=1000_XXXXX_XXXXX" %%f
une bonne âme serait la bienvenue ! je suis sec ! Je comprends pas...
merci d'avance
EDIT : je viens de rerevérifier : chacune des commandes fonctionnent ! là ou ça coince c'est quand je fais une nouvelle boucle "for" (pour la liste des fichiers) contenant donc les autres "for"
EDIT 2 : je viens de remarquer un truc encore plus bizarre : si j'ai 2 fichiers DICOM, la boucle est éxecutée 3 fois ! si j'ai 3 fichiers DICOM la boucle est executée 4 fois etc..... pourquoi ?
Partager