• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Peut-on créer des dossiers définis à l'avance?

Xirix

Nouveau membre
21 Octobre 2015
19
3
:coucou: Bonjour à tous, je suis nouveau sur le forum et galère un peu...
je cherche a déplacer une grosse quantité de dossier sans leur contenu "texte, photo...",
j'ai tenté de convertir les dossier en liste sur TexEdit, mais je ne sais pas non plus créer des dossier a partir d'un texte "en liste", ni si un OS le permet?

Merci d'avance pour vos réponse positive ou négative...;)
 

Berthold

Membre d’élite
Club MacG
5 Novembre 2004
4 603
3 937
54
voir carte
Je ne suis pas sûr de bien saisir ce que tu cherches. À partir d'un fichier texte "Toto Titi Tutu" tu veux un soft qui crée 3 dossiers nommés respectivement Toto, Titi, Tutu, et inversement ?
 

r e m y

Cas clinique
Club MacG
4 Novembre 2000
41 453
4 222
57
St Germain en Laye - FRANCE
Ou à partir d'une arborescence de dossiers donnée, dupliquer celle-ci (mais sans transférer ni copier le contenu des dossiers).
Recréer la meme arborescence de dossiers, mais vide.
C'est bien ca?

Je pense que les dieux de l'applescript vont se faire une joie de proposer un script automatisant la chose!

Attendons qu'ils passent par là....
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
Déjà Merci à vous deux, (Remy) a bien compris ce que je veux faire, et comme je tournais en rond, j'ai découvert quand déplaçant une liste de dossier "toto, Titi, tutu" dans un fichier texte j'obtenais une liste, du coup je chercher à faire la méthode que décris (Berthold)

:(par contre s'il faut utiliser l'applescript ou terminal... un truc du genre j'suis perdu j'aurais besoin d'un coup pouce!
 

zeltron54

Membre d’élite
29 Mars 2008
1 405
207
Lorraine
Bonjour,
Pour élaborer un script j'ai besoin d'informations supplémentaires.
1- les dossiers à dupliquer sont-ils tous dans un même dossier ?
2- y a t' il des sous dossiers dans les dossiers, et si oui faut' il également créer un nouveau dossier à ce nom?

Après ces infos un petit applescript devrait faire l'affaire.
 

r e m y

Cas clinique
Club MacG
4 Novembre 2000
41 453
4 222
57
St Germain en Laye - FRANCE
L'idéal serait de créer un script universel qui inspecte l'arborescence de dossiers et sous-dossiers et recrée la meme dans un dossier destination à spécifier (la meme arborescence de dossiers avec les mêmes noms de dossiers ne peut évidement pas être créée au même endroit que celle existant déjà)
 
  • J’aime
Réactions: Xirix

Xirix

Nouveau membre
21 Octobre 2015
19
3
Bonjour Zeltron54,
1-oui les dossiers son tous dans un même dossier.
2-et oui il y a des sous dossier mais comme il ne me son pas tous utiles, je me contenterais de la première arborescence,
si toutefois on peut copier uniquement les dossier sélectionné c'est top!:happy:
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
L'idéal serait de créer un script universel qui inspecte l'arborescence de dossiers et sous-dossiers et recrée la meme dans un dossier destination à spécifier (la meme arborescence de dossiers avec les mêmes noms de dossiers ne peut évidement pas être créée au même endroit que celle existant déjà)
oui je crois que c'est tout à fait ça que je veux, vu que la destination est sur un autre disque.
 

zeltron54

Membre d’élite
29 Mars 2008
1 405
207
Lorraine
voila déjà un petit script, tu le copies dans l'éditeur de script et tu le lances.
Le script te demande de sélectionner le dossier source, puis le dossier destination.
Il crée dans le dossier destination des dossiers vides du même nom que ceux dans le dossier source.

-- Creer des dossiers vides du nom des dossier source dans le dossier destination
tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les dossiers à dupliquer"
set destination to choose folder with prompt "Sélectionnez le dossier de destination"
my inspecter(chemin, destination)
end tell

on inspecter(un_dossier, destination)
tell application "Finder"
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers

-- traitement d'un dossier
tell application "Finder"

set nom to name of chaque_dossier --récupère le nom du dossier
make new folder at destination with properties {name:nom}

end tell
end repeat
end tell
end inspecter
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
voila déjà un petit script, tu le copies dans l'éditeur de script et tu le lances.
Le script te demande de sélectionner le dossier source, puis le dossier destination.
Il crée dans le dossier destination des dossiers vides du même nom que ceux dans le dossier source.

-- Creer des dossiers vides du nom des dossier source dans le dossier destination
tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les dossiers à dupliquer"
set destination to choose folder with prompt "Sélectionnez le dossier de destination"
my inspecter(chemin, destination)
end tell

on inspecter(un_dossier, destination)
tell application "Finder"
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers

-- traitement d'un dossier
tell application "Finder"

set nom to name of chaque_dossier --récupère le nom du dossier
make new folder at destination with properties {name:nom}

end tell
end repeat
end tell
end inspecter
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Merci infiniment, j'avoue que j'ai pris une suée quand tu ma envoyé les ligne de commandes, je me suis posé la question dois-je écrire entre les parenthèse le nom des dossier!! j'ai testé tel quel sur un dossier teste et ça fait tous, tous seul! c'est génial!:up:
j'aimerai bien apprendre a faire ça! ta un bouquin ou un site a me conseiller? mais j'ai déjà du mal avec automatore.:banghead:

je vais devoir partir je bosserais plus tard sur mes dossiers, un grand merci à toi et aux autres intervenant, ça fait plaisir que des personnes s'intéresse aux petites bricoles des autres!
 

macomaniac

Ouroboros
Club MacG
20 Septembre 2012
59 074
19 640
Forêt de Fontainebleau
:coucou: zeltron.

J'ai testé ton script : à partir d'un dossier A "'source" contenant une arborescence de sous-dossiers, il recopie bien dans un dossier B "destination" le premier niveau d'arborescence des sous-dossiers de A, mais non les niveaux subalternes.

Étant ignare en scripts, je propose une variante via le «Terminal» (ainsi, il y en aura pour tous les "goûts"
)...

Quelqu'un qui voudrait recopier l'arborescence intégrale des sous-dossiers de A dans B (sans le contenu des fichiers bien entendu), pourrait l'exécuter par 2 commandes dans le «Terminal» (il est nécessaire d'avoir créé au préalable un dossier vide de "destination" - désigné par mon B - à l'emplacement de réception voulu). D'abord faire un :

Bloc de code:
cd /chemin_au_dossier_source/A
et ↩︎ (presser la touche "Entrée" du clavier pour activer la commande) --> en pratique, taper cd, sauter un espace, puis faire un glisser-déposer direct du répertoire "source" A dans la fenêtre du «Terminal» pour renseigner automatiquement le chemin au dossier et son nom.

[cette commande invoque cd (change directory) pour loger l'opérateur dans l'espace immédiat du dossier "source" A]

Ensuite faire un :

Bloc de code:
find * -type d -exec mkdir /chemin_au_dossier_destination/B/\{\} \;
et ↩︎ --> en pratique, saisir find * -type d -exec mkdir (copier-coller) et sauter un espace, puis faire un glisser-déposer du dossier "destination" B dans la fenêtre du «Terminal» pour renseigner automatiquement le chemin et le nom du dossier d'accueil. Attention : cette manœuvre génère automatiquement un saut d'espace en coda --> remettre le pointeur au contact du dernier caractère du nom du dossier "destination" et compléter la saisie par /\{\} \; (copier-coller itou).

[Cette commande lance d'abord le programme find (trouver) dans l'espace du répertoire "source" A atteint par la commande cd précédente, avec * pour "tous les objets" mais -type d = option spécifiant le type d'objet : "directories" (dossiers) et via -exec fournit le produit de la recherche en ressource du programme mkdir (make directory : créer dossiers) avec chemin au dossier de destination B et ordre d'y créer autant de dossiers que trouvés à leur rang d'arborescence par /\{\} les \; finaux servant de ponctuation terminale].

--> cette commande crée dans B une arborescence de sous-dossiers vides conforme à l'arborescence totale des sous-dossiers de A.
 

zeltron54

Membre d’élite
29 Mars 2008
1 405
207
Lorraine
Bonjour O Grand Macomaniac !

J'avais commencé à inclure les sous dossiers, dans mon script, mais au vu de la réponse de Xirix j'ai abandonné (il reste même des scories dans le script proposé), d'autant que si les sous dossiers sont inutiles leurs suppressions va être laborieuses...

Mais bravo pour ta solution au terminal sur laquelle je n'ose pas trop m' aventurer, car je ne maîtrise pas assez les commandes. Xirix aura au moins le choix pour réaliser ses besoins.

Bravo et merci pour l'ensemble de tes interventions sur le forum que je lis toujours avec beaucoup de plaisir.
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
Pfff, là j'suis bluffé je viens de tester la version terminale et pareille ça marche du tonner, Lol ce qui est marrant c'est que j'avais déjà vu Remy, Zeltron et Macomaniac intervenir sur d'autre sujet (j'sais pas encore précisément si ça s'appelle des "files" ou "poste") et m'étais dit c'est à ces personnes qu'il faudrait poser la question! mais je savais pas si ça se faisait de poser directement la question à un membre.
voilà je sais c'est redondant mais encore merci et désolé si Zeltron je t'ai coupé dans ton élan de scriptage! Bonne journée à tous à+ j'espère.:up:
 

r e m y

Cas clinique
Club MacG
4 Novembre 2000
41 453
4 222
57
St Germain en Laye - FRANCE
Mais pas de problème! C'est aussi à ca que servent ces forums et je suis heureux (même si mes maigres compétences en scripting ne m'ont pas permis de te proposer moi-même la solution) que tu aies eu, non pas une, mais deux solutions de zeltron et Macomaniac dont je suis convaincu (mais ils confirmeront sans doute) que ca les a amusé de travailler à ton "cahier des charges"

Et sur le processus de demande, il vaut mieux poser la question sur le forum comme tu l'as fait, plutôt que directement à un membre via "conversation" car ça permet de garder question et réponses publiques et accessible à tous pour partager avec ceux qui pourraient avoir le même problème ou similaire.
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
Mais pas de problème! C'est aussi à ca que servent ces forums et je suis heureux (même si mes maigres compétences en scripting ne m'ont pas permis de te proposer moi-même la solution) que tu aies eu, non pas une, mais deux solutions de zeltron et Macomaniac dont je suis convaincu(mais ils confirmeront sans doute) que ca les a amusé de travailler à ton "cahier des charges"
:)Merci ces gentil
 

r e m y

Cas clinique
Club MacG
4 Novembre 2000
41 453
4 222
57
St Germain en Laye - FRANCE
Et comme un bonheur n'arrive jamais seul, tu devrais bénéficier de cours d'orthographe gratuits, car tu verras qu'on est plusieurs à être un peu à cheval sur le respect d'une certaine orthodoxie en terme de graphie (à minima pour rendre les textes compréhensibles)

En l'occurrence, tu aurais dû écrire, au choix:
Merci, c'est gentil!

ou

Merci à ces gentils (avec un "s")
si tu voulais parler de Macomaniac et zeltron54...

;-)
 

Xirix

Nouveau membre
21 Octobre 2015
19
3
Et comme un bonheur n'arrive jamais seul, tu devrais bénéficier de cours d'orthographe gratuits, car tu verras qu'on est plusieurs à être un peu à cheval sur le respect d'une certaine orthodoxie en terme de graphie (à minima pour rendre les textes compréhensibles)

En l'occurrence, tu aurais dû écrire, au choix:
Merci, c'est gentil!

ou

Merci à ces gentils (avec un "s")
si tu voulais parler de Macomaniac et zeltron54...

;-)

:)ok il n'y a pas de soucis, j'ai tellement de lacune en orthographe que toutes mes lignes je les ai corrigés sur google ou Reverso avant de les valider et même comme ça ce n'est pas évident pour moi. Ça ma toujours suivis:sorry:
Merci à toi ;)
 
  • J’aime
Réactions: Berthold et r e m y

zeltron54

Membre d’élite
29 Mars 2008
1 405
207
Lorraine
Bonjour Xirix,
Je te joins le script qui permet de créer tes dossiers y compris dans les sous dossiers, (si comme moi tu n'aimes pas trop le terminal ! :coucou: à Macomaniac).
Il fonctionne comme le premier (sélection du dossier source, puis du dossier destination). Copier coller du script ci-dessous.
Tu n'as plus que l'embarras du choix...

-- Creer des dossiers vides du nom des dossiers sources et sous dossiers dans le dossier destination
tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les dossiers à dupliquer"
set origine to chemin as string
set destination to choose folder with prompt "Sélectionnez le dossier de destination"
my inspecter(chemin, destination, origine)
end tell

on inspecter(un_dossier, destination, origine)
set dest to destination as string

tell application "Finder"
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
set ledossier to chaque_dossier as string --chemin en texte
set nom to name of chaque_dossier -- récupère le nom du dossier en cours

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {":"}
set ledossier2 to text items 1 thru -2 of ledossier as string --enleve les : de fin
set dest2 to text items 1 thru -2 of dest as string --enleve les : de fin
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {origine}
set fin to text item -1 of ledossier2 as string --récupère l arborecence dans le dossier original
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {nom}
set fin2 to text item 1 of fin as string -- arborescence moins le nom
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set dest2 to dest2 & ":" & fin2 -- le chemin complet sans le nom

tell application "Finder"

make new folder at dest2 with properties {name:nom} -- crée le dossier

end tell
end repeat
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
my inspecter(chaque_dossier, destination, origine)
end repeat
end tell
end inspecter
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: Xirix et Berthold

luc1en

Membre émérite
19 Août 2011
787
76
Ici et là, j'aime bien changer
Bonjour,

je savoure…
Du script, du shell, de l'entraide à tous les étages, du savoir dans tous les recoins. Ces coups de main savants sont un excellent contrepoison au venin de la désespérance informatique.

J'avais dû "fabriquer" ce type de routine avec Excel VBA pour des besoins pro. Là je vais pouvoir me refaire un outil pour mes besoins "domestiques", tout en apprenant des quintaux de notions utiles.

Avec de tels contributeurs-sauveteurs, on pourrait trouver du bonheur à apprendre le sanskrit, l'araméen ancien, voire le nahuatl.

Merci à tous !
 
  • J’aime
Réactions: Berthold et r e m y

Xirix

Nouveau membre
21 Octobre 2015
19
3
Bonjour Xirix,
Je te joins le script qui permet de créer tes dossiers y compris dans les sous dossiers, (si comme moi tu n'aimes pas trop le terminal ! :coucou: à Macomaniac).
Il fonctionne comme le premier (sélection du dossier source, puis du dossier destination). Copier coller du script ci-dessous.
Tu n'as plus que l'embarras du choix...

-- Creer des dossiers vides du nom des dossiers sources et sous dossiers dans le dossier destination
tell application "Finder"
set chemin to choose folder with prompt "Sélectionnez le dossier contenant les dossiers à dupliquer"
set origine to chemin as string
set destination to choose folder with prompt "Sélectionnez le dossier de destination"
my inspecter(chemin, destination, origine)
end tell

on inspecter(un_dossier, destination, origine)
set dest to destination as string

tell application "Finder"
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
set ledossier to chaque_dossier as string --chemin en texte
set nom to name of chaque_dossier -- récupère le nom du dossier en cours

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {":"}
set ledossier2 to text items 1 thru -2 of ledossier as string --enleve les : de fin
set dest2 to text items 1 thru -2 of dest as string --enleve les : de fin
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {origine}
set fin to text item -1 of ledossier2 as string --récupère l arborecence dans le dossier original
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
set AppleScript's text item delimiters to {nom}
set fin2 to text item 1 of fin as string -- arborescence moins le nom
set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur

set dest2 to dest2 & ":" & fin2 -- le chemin complet sans le nom

tell application "Finder"

make new folder at dest2 with properties {name:nom} -- crée le dossier

end tell
end repeat
-- traitement des dossiers :
set les_dossiers to folders of un_dossier
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
my inspecter(chaque_dossier, destination, origine)
end repeat
end tell
end inspecter
tell application "Finder"
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell

Bonjour et merci zeltron! je n'irais pas jusqu'à dir que je n'aime pas terminal Lol, mais ne maîtrisant ni l'un ni l'autre, j'apprécie d'avoir plusieurs solutions.