Traitement de fichiers, automatisation de macro

Lilsaure -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je vous explique la situation : je dispose de 200 fichiers environ. Je voudrais écrire un script shell qui me permette d'automatiser le post traitement. En fait, je voudrais que mon script se compose comme :
- étape 1 : renommer le fichier source
J'ai des fichiers commençant par vol_n#xxxxx_ ... et je voudrais les renommer en volxxxx.plt
- étape 2 : appliquer la macro que j'ai créée
Pour cela je tape la commande : tec360.exe nomdufichier nomdelamacro
Mais je voudrais pouvoir boucler cette commande sur tous les fichiers du repertoire et fermer l'application tecplot une fois le traitement terminé
- étape 3 : lors de la macro, une image est exportée. Je voudrais la renommer du nom du fichier volxxxx auquel elle correspond.

Je n'ai jamais fait de programmation sous unix, et on me demande de sortir toutes ces images. A part le faire manuellement, je ne suis pas capable d'écrire le script shell. Pourriez vous m'aider s'il vous plait ?
Voici ce que j'ai écrit pour le moment :

#!/bin/sh

mv vol_n#00001300_t#.13000000000E+02.cpr.plt vol1300.plt
tec360.exe vol1300.plt traitement.mcr
mv export.bmp vol1300.bmp

Ceci n'est valable que pour un seul fichier alors que je voudrais traiter l'ensemble des fichiers, et le script ne semble pas fonctionner ...

3 réponses

  1. jee pee Messages postés 31883 Date d'inscription   Statut Modérateur Dernière intervention   9 979
     
    bonjour,

    Une observation : tu es sûr que ton programme tec360.exe fonctionne sous linux ? .exe est une extension utilisée pour windows, normalement.
    0
  2. Lilsaure
     
    En fait, je passe par Putty pour me connecter sur un autre ordinateur. Quand je tape la commande tec360.exe nomdufichier nomdelamacro la macro tecplot s'exécute bien sur le fichier précisé
    0
    1. Utilisateur anonyme
       
      salut,

      donc, tu es sur linux, et tu accèdes, via
      putty
      à un "serveur" windows, c'est ça ?
      alors, il ne faut pas écrire un script
      bash
      pour linux, mais écrire un script batch pour windows, qui sera localisé sur le serveur.
      :(
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    d'abord tester le rename, enlever le -n si c'est ok
    la boucle, enlever les echo si c'est ok
    faire une sauvegarde avant
    rename -n 's/_n#0*//; s/_.*$/.plt/' *.plt
    #et après :
    for F in *.plt; do
    echo tec360.exe $F traitement.mcr
    echo mv export.bmp $(basename $F .plt).bmp
    done
    0
    1. lilsaure
       
      Bonjour,

      Je vous remercie pour votre réponse ! J'ai tout d'abord essayé la ligne avec la commande rename, mais j'ai eu le retour suivant "-bash: rename: commande introuvable". J'ai donc essayé de remplacer rename par "mv" pour renommer mais j'obtiens cette fois" mv: la cible « vol_n#00001000_t#.10000000000E+02.cpr.plt » n'est pas un répertoire" Pensez vous que la commande mv n'est pas celle qu'il faut ?

      Merci beaucoup pour votre temps
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      sans rename, enlever les echo si ok
      #!/bin/bash
      for F in *.plt; do
      FF=$(sed 's/_n#0*//; s/_.*$/.plt/'<<<"$F")
      echo mv $F $FF
      echo tec360.exe $FF traitement.mcr
      echo mv export.bmp ${FF%.plt}.bmp
      done
      0