Créer dossiers à partir d'un fichier .txt

Lob72

Membre enregistré
8 Janvier 2023
5
0
51
Bonjour à tous,
Dans le dossier "Images" j'ai un dossier nommé "Évènement 1"
Dans le dossier "Évènement 1" j'ai un fichier texte nommé "Liste engagés évènement 1"
La construction du fichier texte est :

1 (Tabulation) #1 Bruno S
2 (Tabulation) #2 Romain C & Clarisse D
3 (Tabulation) #3 Vincent J
...
150 (Tabulation) #120 Christophe O

Je ne peux pas changer la structure du fichier texte car il est utilisé par une application qui m'impose d'avoir une Tabulation entre le numéro d'indexation et le numéro et nom du Participant.

Je n'arrive pas à créer le Script qui me permettrai d'ajouter automatiquement les dossiers "#1 Bruno S", "#2 Romain C & Clarisse D", "#3 Vincent J" et "#120 Christophe O" dans le dossier "Évènement 1".
Merci d'avance pour votre aide.
 
Bonsoir,
Pour créer les dossiers vides du nom de chaque ligne du fichier texte.
Le script te demande de sélectionner le fichier texte à traiter et crée les dossiers au même niveau que le fichier texte.
Il te met un message lorsqu'il a terminé.
Attention je n'ai fait aucun contrôle si le dossier existe déjà, il y aura une erreur dans ce cas.

Bloc de code:
tell application "Finder"
    set chemin to choose file with prompt "sélectionner le fichier texte (Liste engagés évènement 1) à traiter"
    set chemindossier to container of chemin
    open for access chemin
    set laliste to read chemin
    close access chemin
    set nb to count paragraph of laliste
    repeat with i from 1 to nb
        set AppleScript's text item delimiters to {"#"}
        set ledossier to "#" & text item 2 of paragraph i of laliste
        make new folder at chemindossier with properties {name:ledossier}
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: Lob72 et baron
tell application "Finder" set chemin to choose file with prompt "sélectionner le fichier texte (Liste engagés évènement 1) à traiter" set chemindossier to container of chemin open for access chemin set laliste to read chemin close access chemin set nb to count paragraph of laliste repeat with i from 1 to nb set AppleScript's text item delimiters to {"#"} set ledossier to "#" & text item 2 of paragraph i of laliste make new folder at chemindossier with properties {name:ledossier} end repeat end tell tell application "Finder" activate (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"}) end tell
Bonsoir Zeltron54,
Merci beaucoup pour la rapidité de ta réponse.
Ça fait le boulot, c'est Top, merci.
Je vais voir pour faire une extraction différente de mon .xml vers mon .txt car j'ai un petit bug lors de la création des dossiers avec les caractères suivants : é, è, ^, ¨, ç.
 
Bonjour,
On peut toujours ajouter dans le script, le remplacement des lettres accentuées.
j'avais fait un script qui remplace, dans l'ordre :

ÀÁÂàÄÅàáâàäåÒÓÔÕÖòóôõöÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ()[]{}/%@#",;?!.\>< (majuscule par minuscule)
par
AAAaAAaaaaaaOOOOOoooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn---------------__--
et passe le tout en minuscules.

Si tu es intéressé fin signe.
 
Bonjour Zeltron54,
Merci pour ta réponse et ta proposition.
Dans mon cas, les Dossiers créés automatiquement sont utilisés dans une applications tierce et sont envoyés aux Clients.
Retirer l'accentuation n'est donc pas la solution la plus adaptée.
Je vais essayer de retirer quelques critères dans ton Script pour nommer les dossiers : "#1", "#2", "#3" sans le Nom des Clients.

Pour info : Je reçois un .xml, j'utilise la fonction CONCATENER, j'enregistre en .csv et je converti en .txt (le problème est peut-être là ?)
 
Pour mettre le nom des dossiers avec #le numéro (la partie du nom après la tabulation et avant le premier espace)
le script devient:
Bloc de code:
tell application "Finder"
    set chemin to choose file with prompt "sélectionner le fichier texte (Liste engagés évènement 1) à traiter"
    set chemindossier to container of chemin
    open for access chemin
    set laliste to read chemin
    close access chemin
    set nb to count paragraph of laliste
    repeat with i from 1 to nb
        set AppleScript's text item delimiters to {"#"}
        set ledossier to text item 2 of paragraph i of laliste
        set AppleScript's text item delimiters to {" "}
        set ledossier to "#" & text item 1 of ledossier
        make new folder at chemindossier with properties {name:ledossier}
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Bonsoir,
pour éviter le petit bug des caractères accentués qui sont mal encodés, utilise le script ci-dessous.

Dis moi si cela te convient !

Bloc de code:
tell application "Finder"
    set chemin to choose file with prompt "sélectionner le fichier texte (Liste engagés évènement 1) à traiter"
    set chemindossier to container of chemin
    set lechemin to POSIX path of chemin
    open for access chemin
    set laliste to read chemin
    close access chemin
    set nb to count paragraph of laliste
    set commande to "head -" & nb & " " & "\"" & lechemin & "\""
    set lalisteok to do shell script commande
    repeat with i from 1 to nb
        set AppleScript's text item delimiters to {"#"}
        set ledossier to "#" & text item 2 of paragraph i of lalisteok
        make new folder at chemindossier with properties {name:ledossier}
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Merci Zeltron54,

J'ai peut-être un début de solution.
C'est un peu tiré par les cheveux mais pourquoi pas.

Voici la liste des 28 caractères qui me pose problème :
À à Â â Ä ä É é È è Ê ê Ë ë Î î Ï ï Ô ô Ö ö Û û Ü ü Ç ç
Lors de la création automatique des dossiers ces caractères sont respectivement remplacés par :
À à Â â Ä ä É é È è Ê ê Ë ë Î î Ï ÿ Ô ô Ö ö Û û Ü ü Ç ç

Quand tous les dossiers ont été créés, dans le Finder on a la possibilité de tout sélectionner cmd A et avec le clic droit de renommer l'ensemble.
Avec l'option Remplacer du texte √Ä peut devenir À.

J'ai fait le test avec une confiance démesurée...

AppleScript:
tell application "Finder"
    activate
    set name of folder "#1 √Ä" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#1 À"
    set name of folder "#2 √†" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#2 √†"
    set name of folder "#3 √Ç" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#3 √Ç"
    set name of folder "#4 √¢" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#4 √¢"
    set name of folder "#5 √Ñ" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#5 √Ñ"
    set name of folder "#6 √§" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#6 √§"
    set name of folder "#7 √â" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#7 √â"
    set name of folder "#8 √©" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#8 √©"
    set name of folder "#9 √à" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#9 √à"
    set name of folder "#10 √®" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#10 √®"
    set name of folder "#11 √ä" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#11 À"
    set name of folder "#12 √™" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#12 √™"
    set name of folder "#13 √ã" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#13 √ã"
    set name of folder "#14 √´" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#14 √´"
    set name of folder "#15 √é" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#15 √é"
    set name of folder "#16 √Æ" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#16 √Æ"
    set name of folder "#17 √è" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#17 √è"
    set name of folder "#18 √Ø" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#18 √Ø"
    set name of folder "#19 √î" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#19 √î"
    set name of folder "#20 √¥" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#20 √¥"
    set name of folder "#21 √ñ" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#21 √ñ"
    set name of folder "#22 √∂" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#22 √∂"
    set name of folder "#23 √õ" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#23 √õ"
    set name of folder "#24 √ª" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#24 √ª"
    set name of folder "#25 √ú" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#25 √ú"
    set name of folder "#26 √º" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#26 √º"
    set name of folder "#27 √á" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#27 √á"
    set name of folder "#28 √ß" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "#28 √ß"
    set name of document file "Accentuation.txt" of folder "Liste Accentuations" of folder "Évènement 1" of folder "Pictures" of folder "imaclaurent" of folder "Users" of startup disk to "Accentuation.txt"
end tell

Mais je suis vite redescendu sur terre...
Il n'a pas fait de différence entre √Ä et √ä du coup #11 √ä a été remplacé par #11 À comme #1 À.

Je voulais te joindre le fichier .txt mais je n'ai pas réussi. (Voici son contenu)

Bloc de code:
1    #1 À
2    #2 à
3    #3 Â
4    #4 â
5    #5 Ä
6    #6 ä
7    #7 É
8    #8 é
9    #9 È
10    #10 è
11    #11 Ê
12    #12 ê
13    #13 Ë
14    #14 ë
15    #15 Î
16    #16 î
17    #17 Ï
18    #18 ï
19    #19 Ô
20    #20 ô
21    #21 Ö
22    #22 ö
23    #23 Û
24    #24 û
25    #25 Ü
26    #26 ü
27    #27 Ç
28    #28 ç
 
Essai ce script :
Bloc de code:
tell application "Finder"
    set chemin to choose file with prompt "sélectionner le fichier texte (Liste engagés évènement 1) à traiter"
    set chemindossier to container of chemin
    set lechemin to POSIX path of chemin
    set nb to do shell script "sed -n '$=' " & "\"" & lechemin & "\""
    set commande to "head -" & nb & " " & "\"" & lechemin & "\""
    set lalisteok to do shell script commande
    repeat with i from 1 to nb
        set AppleScript's text item delimiters to {"#"}
        set ledossier to "#" & text item 2 of paragraph i of lalisteok
        make new folder at chemindossier with properties {name:ledossier}
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: luc1en et Lob72
Avec les 2 derniers scripts notamment le dernier, les dossiers doivent être crées avec les bons caractères, pas besoin de renommer !
 
Content pour toi !
Bonne soirée... :up:
 
  • J’aime
Réactions: Lob72