# comment créer des séries de dossiers



## resolution (3 Octobre 2015)

bonjour à tous,
je ne connais absolument rien aux scripts...(sauf que c'est un super truc quand on sait les faire!)

J'aimerais savoir s'il est possible de faire un script pouvant me créer des séries de 'dossiers vides" avec un nom: le 1er serait intitulé :01AA-aa le 2ème 01AA-ab ainsi de suite jusqu'à 01AA-az. puis une 2ème série dont le 1er serait 01AA-ba , le 2ème 01AA-bb etc jusqu'à 01AA-bz. (des séries qui vont aller peut-être jusqu'à 05ZZ-zz..)
Pourquoi,? pour la bonne raison que j'ai des milliers de fichiers,photos etc qui doivent être intégrés dans ces dossiers de classement...
Si une aimable personne peut m'indiquer la façon de procéder pour écrire ce script ,je l'en remercie par avance


----------



## JacqR (4 Octobre 2015)

Bonjour,

Vous pouvez utiliser la commande mkdir pour créer des dossiers.
Voici un script AppleScript qui créera vos deux séries :
Ouvre l'application "Editeur de script", copie/colle ce script, presse le bouton "*Exécuter*".


```
set x to quoted form of POSIX path of (choose folder with prompt "Sélectionnez le dossier où vous voulez créer des dossiers")
do shell script "cd " & x & "&& mkdir -p 01AA-{a..b}{a..z}"
```

Information sur {a..b}{a..z} : une série de *a* jusqu'à *b*, chaque série sera créée avec une autre série de *a* jusqu'à *z*​

Un autre exemple, cela créera 3380 dossiers (une série de (*01AA-*, *02AA-*, *03AA-*, *04AA-* et *05AA-), * chaque série sera créée avec  une série de *aa* à *zz*).

```
set x to quoted form of POSIX path of (choose folder with prompt "Sélectionnez le dossier où vous voulez créer des dossiers")
do shell script "cd " & x & "&&  mkdir -p 0{1..5}AA-{a..z}{a..z}"
```


----------



## resolution (5 Octobre 2015)

JacqR a dit:


> Bonjour,
> 
> Vous pouvez utiliser la commande mkdir pour créer des dossiers.
> Voici un script AppleScript qui créera vos deux séries :
> ...



bonjour JacqR,
Un grand merci pour votre réponse rapide et pour vos informations très détaillées,
je vais garder cela précieusement .. cela va me permettre aussi d'étudier la façon de procéder, à voir si je suis capable d'adapter ce script pour d'autres séries du même genre (là j'ai comme un doute...!)
je vous souhaite une bonne journée.


----------



## resolution (8 Octobre 2015)

re bonjour JacqR,

si tu as encore un peu de temps à me consacrer...
donc j'ai copié ton script et voilà ce que cela donne:
j'ai un dossier noté "01AA" et une suite de dossiers notés "a" puis "b" etc etc
j'ai rajouté dans le script la formule: do shell script....01AA-aa {a..b} {a..z}" et j'obtiens un dossier "01AA-aa" puis une série de dossiers notés "aa" puis "ab" etc etc.
En fait je n'arrive pas à faire ce que je souhaite  et je me suis peut être mal exprimé au départ.
je voudrais avoir une série de dossiers notés "01AA-aa" puis "01AA-ab" puis "01AA-ac" et cela jusqu'à "01AA-az"
pus une 2ème série "01AA-ba" puis "01AA-bb" etc etc jusqu'à "01AA-bz".
étant donné que je ne pige rien dans les scripts (je ne vois pas la relation des "& x & "&& avec le reste dans ton script.
le problème c'est que je n'ai pas le temps pour l'instant d'apprendre l'applescript..!

Merci aux personnes qui passent sur mon post et qui auraient un autre petit bout de formule pour compléter celui-là


----------



## JacqR (8 Octobre 2015)

Bonjour,



resolution a dit:


> donc j'ai copié ton script et voilà ce que cela donne:
> j'ai un dossier noté "01AA" et une suite de dossiers notés "a" puis "b" etc etc
> j'ai rajouté dans le script la formule: do shell script....01AA-aa {a..b} {a..z}" et j'obtiens un dossier "01AA-aa" puis une série de dossiers notés "aa" puis "ab" etc etc.


C'est que vous avez deux *espaces* dans le nom, dans un Shell il faut protéger les espaces avec la barre oblique inversée, deux fois dans un *AppleScript*, comme ceci

```
do Shell script "cd " & x & "&& mkdir -p 01AA-aa\\ {a..b}\\ {a..z}"
```
cela donnera  "*01AA-aa a a*", "*01AA-aa a b*", "*01AA-aa a c*" ... jusqu'à "*01AA-aa b z*"




resolution a dit:


> En fait je n'arrive pas à faire ce que je souhaite  et je me suis peut être mal exprimé au départ.
> je voudrais avoir une série de dossiers notés "01AA-aa" puis "01AA-ab" puis "01AA-ac" et cela jusqu'à "01AA-az"
> pus une 2ème série "01AA-ba" puis "01AA-bb" etc etc jusqu'à "01AA-bz".


Pour faire cela, vous n'avez rien à modifier ou à ajouter dans le premier script de mon premier message que je vous ai proposé,  il suffit de faire un copier/coller du script et de l'exécuter.




resolution a dit:


> étant donné que je ne pige rien dans les scripts (je ne vois pas la relation des "& x & "&& avec le reste dans ton script.
> le problème c'est que je n'ai pas le temps pour l'instant d'apprendre l'applescript..!


le *&* est une concaténation du texte dans une variable *Applescript* avec le texte dans la commande do Shell script
le && est une fonction du Shell (le Shell /bin/*sh* par défaut dans un *AppleScript*) , si la commande *cd* ne fonctionne pas (à cause d'un chemin de dossier invalide), cela n'exécutera pas la commande mkdir, donc, il n'y aura pas de création de dossiers à la racine du disque de démarrage si le chemin du dossier est invalide.

-------
------

Voici un autre exemple avec une liste de noms (que vos pouvez copier à partir d’un de vos documents et le coller dans le script (un nom par ligne), vous pouvez en mettre des centaines de noms dans le script.).

```
set listeDeNoms to "01AA-
01BB-
img zz-
ccc-" -- dans cet example, le nom dans la troisième ligne contient un espace,  je ne mets  pas de barres oblique inversée, car j'utilise la commande quoted form  dans la boucle

set x to quoted form of POSIX path of (choose folder with prompt "Sélectionnez le dossier où vous voulez créer des dossiers")
repeat with i in paragraphs of listeDeNoms
    set ceNom to quoted form of i
    do shell script "cd " & x & "&& mkdir -p " & ceNom & "{a..z}"
end repeat
```

Cela créera des dossiers (une série de a à z  à chaque nom dans la liste)


----------



## resolution (10 Octobre 2015)

JacqR a dit:


> Bonjour,
> 
> 
> C'est que vous avez deux *espaces* dans le nom, dans un Shell il faut protéger les espaces avec la barre oblique inversée, deux fois dans un *AppleScript*, comme ceci
> ...



JacqR, bonjour
 encore merci pour toutes ces indications.
j'ai enfin réalisé ce qu'il fallait faire pour les espacements \\ et {a..b} avec {a..d}pour avoir des suites jusqu'à (ad....az)
En fait j'avais bien copié votre ligne de code mais j'obtenais  01AA- a a au lieu de 01AA-aa.
bon je verrai pour la suite des op.
cordialement


----------

