IPB

Bienvenue invité ( Connexion | Inscription )

> Renommer des dossiers à partir d'un csv, en AppleScript ou en Bash
Options
m00n
posté 13 Sep 2021, 18:28
Message #1


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 391
Inscrit : 2 Jun 2006
Membre no 62 332



Hello,

jai besoin dun coup de main car je voudrais renommer des dossiers à partir de données dun fichier csv.

le fichier csv est comme ceci :

5a0efb17d6784366449ae282;Dupont;Catherine Dominique;05/10/1967
5a1d2ce9daf4133eb485b805;Calicis;Mégane Maude;02/01/1994
5a1d8e9235a52e3f016185fe;Bérant;Marlène Mireille;12/04/1987
5a1d78b59c05cc3ef8e88b2d;Canon;Etienne Marie;02/07/2003
...

Mes dossiers sont nommé 5a0efb17d6784366449ae282 et 5a1d2ce9daf4133eb485b805 etc.

Je voudrais donc remplacer 5a1d2ce9daf4133eb485b805 par le nom, le prénom et la date de naissance de la personne.

Comment faire ?


Merci de votre aide.

didier

Ce message a été modifié par m00n - 13 Sep 2021, 18:29.


--------------------
MacBook Pro (15-inch, Late 2016), 2,9 GHz Intel Core i7, 16 Go 2133 MHz LPDDR3
Go to the top of the page
 
+Quote Post
 
Start new topic
Réponse(s)
PBell
posté 13 Sep 2021, 20:10
Message #2


Macbidouilleur de bronze !
**

Groupe : Membres
Messages : 266
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonsoir,
Voici un début de script en Applescript qui réponds à ton problème:

CODE
-- sélection du dossier dans lequel les dossiers sont à renommer
set Dossier_Parent to choose folder with prompt "Sélectionner le dossier contenant les dossiers à changer"
set S_Dossier to Dossier_Parent as string

-- sélection du fichier csv
set Fcsv to choose file with prompt "Sélectionner le fichier csv"

set FContent to read Fcsv
set mes_lignes to every paragraph of FContent
set AppleScript's text item delimiters to {";"} -- utiliser le; comme séparateur
repeat with une_ligne in mes_lignes
    set T to every text item of une_ligne
    if (count of text items of T) = 4 then -- c'est bien une ligne valide
        set F_Dossier to text item 1 of T
        set F_Nom to text item 2 of T
        set F_Prenom to text item 3 of T
        set F_Date to text item 4 of T
        tell application "Finder"
            try
                -- Vérifie si le dossier existe
                if not (exists folder (S_Dossier & F_Dossier)) then
                    display alert "Le dossier " & F_Dossier & " n'existe pas"
                else
                    set name of folder (S_Dossier & F_Dossier) to F_Nom & "_" & F_Prenom
                    -- ajouter la date après conversion
                end if
            end try
        end tell
    end if
end repeat


J'ai supposé que la première colonne du fichier csv ne contient que des noms de dossier et pas des chemins complets, et donc que ces dossiers se trouvent tous dans un seul dossier que tu dois sélectionner.
Par ailleurs ce script ne renomme qu'avec le nom et le prénom séparés par un "_".
Il ne reste que la date à transformer car les caractères / doivent être changés pour éviter les problèmes sous unix (les / signifient une arborescence de dossier !): par exemple à transformer en jj_mm_aaaa

A toi d'ajuster.

Cordialement


--------------------
iiMac 24 M1 16Go/1To 13.5.1
iMac 27 i5 3,1GHz 8Go/1To 10.11.6 / 10.6.8
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 18th July 2025 - 09:52