Traitement de fichiers, automatisation de macro

Fermé
Lilsaure - Modifié par Lilsaure le 8/06/2014 à 16:58
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 10 juin 2014 à 11:40
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 ...
A voir également:

3 réponses

jee pee Messages postés 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 235
8 juin 2014 à 17:22
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
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
Utilisateur anonyme
9 juin 2014 à 16:48
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
9 juin 2014 à 16:00
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
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
10 juin 2014 à 11:40
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