IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Renommer un lot de fichiers (avancé)


Sujet :

AppleScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut Renommer un lot de fichiers (avancé)
    Pour planter un peu le décors, suite à un besoin bien spécifique, j'ai commencer à utiliser automator ce matin en n'y connaissant pas grand chose (voir rien du tout)
    J'ai suivi plusieurs tutos et divers guides mais je n'arrive pas à mes fins avec ce logiciel. C'est pourquoi je viens poster ici, espérant qu'apple script (et vos cerveaux) me permettront de réussir la où j'ai échoué sur automator sans applescript. Si cependant quelqu'un résout mon problème avec automator seul je suis aussi preneur.


    Ce que j'ai à ma disposition
    Un fichier texte avec un nom .......XX (XX=Code pays composé de 2 lettres majuscules) contenant du texte dans lequel on retrouve régulièrement ce même code pays.
    Un fichier excel avec une liste de différents codes pays (eux aussi composés de 2 lettres)

    Ce que je cherche à faire :
    -Créer plusieurs copies (une pour chaque pays) du fichier texte (ça j'ai réussi avec automator avec une fonction pour dupliquer et une boucle pour spécifier le nombre de fois qu'il fallait le faire).

    -Renommer chaque fichier et remplaçant le code pays par un qui est dans la liste du fichier excel en faisant par exemple correspondre le numero de la copie avec une colonne numéro ((la je n'ai pas compris comment définir que le texte de remplacement devait faire appel à mon fichier excel)

    -Que dans chaque copie créer le code pays dans le texte soit lui aussi remplacé par le code pays dans la liste.


    Exemple:
    Fichier excel
    1 AB
    2 BC
    3 etc...


    Fichier de base:
    Nom :azerty-XX
    Texte :
    Bla blaXX
    Bla bla bla XX

    Fichiers que je voudrais obtenir

    Fichier copie 1 :
    Nom : azerty-AB
    Texte :
    Bla blaAB
    Bla bla bla AB

    Fichier copie 2 :
    Nom : azerty-BC
    Texte :
    Bla blaBC
    Bla bla bla BC

    Etc...

    En espérant avec été assez clair et qu'une âme charitable voudra bien m'aider (ou au moins me donner des pistes)

    Merci d'avance

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 106
    Points
    43 106
    Par défaut
    Regardes du coté de file buddy. C'est un vieux soft, à vérifier la compatibilité avec les derniers systèmes. Je ne l'ai pas utilisé depuis des lustres.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonjour,
    Renommer des noms de fichiers et les dupliquer : Oui, Automator et AppleScript sont les outils adéquats.
    Je veux bien t'aider, mais j'ai relu 2 fois ton post et j'avoue que je ne comprends pas toute ta demande ! En particulier :

    Citation Envoyé par SuperLuminou Voir le message
    -Renommer chaque fichier et remplaçant le code pays par un qui est dans la liste du fichier excel en faisant par exemple correspondre le numero de la copie avec une colonne numéro ((la je n'ai pas compris comment définir que le texte de remplacement devait faire appel à mon fichier excel)
    A quoi sert ton fichier Excel ?

    Ce que je crois avoir compris l'une des 2 versions ci-dessous :
    - Tu associes un code pays (je suppose le code ISO des pays) à un N°. Par exemple FR -> 1, UK -> 2, ES -> 3 ,et ainsi de suite
    - Tu lis des fichiers texte (au fait vraiment texte pur ou Word ?) dont le nom est xxxxxx-code et pour chacun ut met le N° : par exemple le fichier dont le nom est "truckmuche-UK" deviendrait "truckmuche-02"
    Dans ce cas, je ne vois pas ce que tu fais avec le contenu des fichiers texte

    Ou alors :
    - Tu associes un code pays (je suppose le code ISO des pays) à un N°. Par exemple FR -> 1, UK -> 2, ES -> 3 ,et ainsi de suite
    - Tu as un seul fichier texte dont le nom est Truckmuche-XX avec un contenu qui contient plusieurs fois "XX" et tu veux remplacer chaque "XX" du texte par un code pays en nommant cette version de fichier "Truckmuche-YY" , YY étant le numéro du pays.

    ou alors je n'ai rien compris !!
    Je précise que les 2 sont faisables, le premier est bien plus simple.

    Avec une bonne compréhension du problème, il sera déjà à moitié résolu.

    Cordialement

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci à tous les deux pour vos réponses,

    Chrtophe : Le logiciel semble payant et comme c'est pour mon boulot, j'ai comme qui dirait pas envie de payer pour bosser (et la boite n’achètera pas le logiciel pour une seule utilisation) mais merci quand même de ta réponse.

    PBELL : Ta deuxième hypothèse correspond plus à ce que je souhaite faire, sauf que le code YY dont tu parles n'est pas un numéro de pays mais un autre code pays (2 lettres).

    Je vais essayer de clarifier ma demande. J'ai un fichier texte (un seul, en .txt) dont le titre et le contenu contiennent un code pays composé de deux lettres (XX) (Truckmuche-XX.txt). A coté de ça j'ai une liste de 137 code pays eux aussi composés de 2 lettres sous la forme d'un excel. Ce que je voudrais obtenir ce sont 137 copies de mon fichier texte, en changeant à chaque fois le code pays (dans le titre et dans le texte) par ceux du fichier excel.

    L'histoire des numéros associés à chaque pays c'est juste que je me suis dit qu'il serait plus facile de créer des copies numérotées (ce que j'ai réussi à faire avec automator) et de changer ensuite chaque numéro par un code pays mais on peux peut surement se passer des numéros.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir SuperLuminou,
    Ta demande étant clarifiée, il ne reste plus qu'à remettre le besoin dans l'ordre :
    1) Sélectionner le fichier modèle de texte (celui contenant des XX à la place du code pays)
    2) Définir le dossier de destination des fichiers texte par pays. Je n'aime pas créer sur le bureau les 137 fichiers ! Donc je demande dans quel dossier les mettre !
    3) Lire le fichier des codes pays. Comme il est beaucoup plus simple de lire un fichier texte qu'un fichier Excel, je suppose que la liste sera dans un fichier texte (quitte, dans Excel , à enregistrer cette liste en format texte !). Le fichier texte des pays doit contenir un code pays par ligne (si il y a des lignes vides, le programme les sautera !)

    Le script doit ensuite boucler sur chaque code pays et pour chacun, remplacer les XX du texte modèle en code pays puis enregistrer le texte dans le dossier destination dans un fichier avec le nom : Fichier "code pays" . txt

    Pour le remplacement du texte "XX" par le code pays, je fais appel à une instruction Unix qui lit le fichier texte modèle et l'affiche en remplaçant le texte par le code pays (instruction do shell script et commande sed).
    Comme l'affichage se fait via la variable N_Texte, il suffit d'écrire cette variable dans le nouveau fichier texte et le tour est joué !
    Note : comme c'est une commande Unix, je dois donner le chemin Unix du fichier Modèle et non pas son chemin Applescript,...d'où la seconde ligne du code

    Voici le code avec des commentaires pour que tu puisse l'adapter si nécessaire et en tout cas le comprendre : (bien sûr, c'est testé et fonctionnel !!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    -- Sélection du fichier texte initialset Fichier_Modele to choose file with prompt "Sélectioner le fichier texte de modèle"
    set Unix_Modele to quoted form of POSIX path of (Fichier_Modele)
    
    
    -- Sélection du dossier destination des fichiers pays
    set D_Destination to (choose folder with prompt "Sélectioner le dossier de destination") as string
    
    
    -- selection et lecture du fichier texte des codes pays
    -- ce fichier texte contient un code pays sur chaque ligne (donc séparé par des return)
    set Fichier_Pays to choose file with prompt "Sélectionner le fichier des codes pays"
    --lecture des codes pays du fichier sous forme de paragraphes (un pays par ligne)
    tell application "Finder" to set F_Lignes to paragraphs of (read Fichier_Pays)
    
    
    repeat with Code_Pays in F_Lignes
        if Code_Pays is not "" then
    -- remplace XX dans un fichier texte par Pays
            set N_Texte to do shell script "sed -e 's/XX/" & Code_Pays & "/g' " & Unix_Modele
            set F_Result to D_Destination & "Fichier " & Code_Pays & ".txt"
    -- ré-écrit le fichier résultant
    open for accessfile (F_Result) with write permission
    writeN_Textetofile (F_Result)
    close accessfile (F_Result)
        end if
    end repeat
    Voilà qui correspond à ta demande, j'espère.
    Cordialement

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Ingénieur environnement
    Inscrit en
    Avril 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur environnement

    Informations forums :
    Inscription : Avril 2014
    Messages : 7
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup PBELL

    En adaptant les noms et la forme de mes fichiers et ton code pour nommer les résultats, cela fait exactement ce que je voulais. Avec les explications en plus pour comprendre comment ca fonctionne c'est vraiment parfait. Voila qui va m'encourager à poursuivre dans l'apprentissage d'applescript.

  7. #7
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    C'est parfait ! je suis content pour toi.

    Tu peux donc indiqué "Résolu"... merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. renommer une liste de fichiers
    Par joenco dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/09/2007, 15h44
  2. Renommer ou Déplacer, Supprimer fichier
    Par Loopinge71 dans le forum MFC
    Réponses: 1
    Dernier message: 13/06/2007, 18h27
  3. Gpg - décrypter un lot de fichier
    Par segphault dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 25/08/2006, 11h19
  4. [VBA-Excel] Ouvrir un lot de fichier txt dans Excel
    Par Trollakuir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/06/2006, 10h02
  5. lecture d'un fichier : "avancer" ds le fichier
    Par DindonSauvage dans le forum C++
    Réponses: 3
    Dernier message: 22/05/2006, 18h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo