[RÉSOLU] Envoyer une liste de noms de fichiers vers un exécutable

Envoyer une liste de noms de fichiers vers un exécutable [RÉSOLU] - Shell/Batch - Programmation

Marsh Posté le 14-08-2020 à 17:41:45    

Bonjour,
 
Voici mon problème : j’ai une liste de fichiers de même extension dans un dossier à faire traiter par un exécutable appelé DSFTool.
Ces fichiers sont compressés et doivent d’abord être renommés en .7z puis décompressés avant d’être traités par DSFTool.
 
J’arrive correctement à réaliser ces étapes, mais ensuite ça se corse, car le traitement impose d’écrire précisément en syntaxe que tel fichier .dsf doit être transformé en .txt.
Il faut donc récupérer le nom de fichier sans extension et lui attribuer à chaque fois les bonnes.
 
N.B. Tout se passe dans le répertoire D:\XPTools et l’exécutable se trouve dans D:\XPTools\Tools.
 
J’ai essayé une multitude de choses, sans succès. Voici la dernière version :
 

Code :
  1. @echo off
  2. ren *.dsf *.7z       ::renommage des fichiers
  3. 7z e ./*.7z       ::décompression des archives
  4. del /s ./*.7z       ::suppression des archives inutiles
  5. for %%a in (*.dsf) do set fileName=%%~na   ::récupération nom fichier
  6. echo Processing %fileName%.dsf
  7. cd "D:\XPTools%\Tools" & start DSFTool.exe --dsf2txt "%fileName%.dsf" "%fileName%.txt" ::Lancement de l’exe  
  8. pause


 
Merci pour votre aide.


Message édité par charliedelta le 17-08-2020 à 13:13:18
Reply

Marsh Posté le 14-08-2020 à 17:41:45   

Reply

Marsh Posté le 16-08-2020 à 12:08:52    

A la ligne 9, tu es dans D:\XPTools%\Tools donc je vois pas trop comment %fileName%.dsf va être trouvé, puisqu'il est ailleurs.
Je tenterais  
start "D:\XPTools%\Tools\DSFTool.exe" --dsf2txt "%fileName%.dsf" "%fileName%.txt" ::Lancement de l’exe  
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 17-08-2020 à 13:11:33    

C’est bon, problème résolu.
 
Merci pour la remarque, effectivement le % était de trop, j’avais oublié de le supprimer. D’autre part, il fallait également intégrer le fait qu’il faut attendre que DSFTool ait terminé son processus avant de continuer le script.
 
Pour info, si ça peut rendre service à quelqu’un, voici mon code final :
 

Code :
  1. @echo off
  2. rem renommage des archives
  3. ren *.dsf *.7z
  4. rem extraction des archives
  5. 7z e *.7z
  6. rem suppression des archives
  7. del *.7z
  8. :loop
  9. if exist *.dsf (goto :process) else goto :finish
  10. :process
  11. rem récupération nom fichier
  12. for %%a in (*.dsf) do set fileName=%%~na
  13. rem envoi à DSFTool
  14. start "DSFTool" /B /wait D:\XPTools\tools\DSFTool.exe --dsf2text "%fileName%.dsf" "%fileName%.txt"
  15. rem nettoyage des fichiers inutiles
  16. del %fileName%.dsf *.txt *txt.sea_level.raw
  17. rem déplacement au bon endroit
  18. move D:\XPTools\tools\*.txt.elevation.raw D:\XPTools\Processed\
  19. goto :loop
  20. :finish
  21. echo Done.
  22. pause


 
Bonne journée !  :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed