Applescript: comment nommer un dossier avec la date?

zevlac

Membre junior
14 Novembre 2001
21
0
Comment puis-je donner comme nom à un dossier la date (et l'heure) avec Applescript?
Merci d'avance!
 

FredoMkb

Membre confirmé
21 Avril 2003
190
5
Salut


Voici une première approche (il faut faire un copier/coller du code dans une fenêtre de l'éditeur de scripts et l'enregistrer en tant qu'application autonome), on peut l'utiliser par double-clic, ou par glisser-déposer sur son icône.
<font class="small">Code:</font><hr /><pre> on run
open {} &amp; (choose folder)
end run

on open Drop
set LaDate to my FrenchVanillaDottedDate2(current date, "/")
set LHeure to my HeureSansDeuxPoints(time string of (current date), "-")
tell application "Finder" to set name of (item 1 of Drop) to LaDate &amp; " " &amp; LHeure
end open

--Source &lt;http://wirinum.free.fr/vanilla/AppleScriptsVanilla.html&gt;
on FrenchVanillaDottedDate2(theDate, Sep)
copy theDate to newDate
set month of newDate to January
tell (((year of theDate) * 10000 + (newDate - 2500000 - theDate) ¬
div -2500000 * 100 + (day of theDate)) as string) to return ¬
text 7 thru 8 &amp; Sep &amp; text 5 thru 6 &amp; Sep &amp; text 3 thru 4
end FrenchVanillaDottedDate2

on HeureSansDeuxPoints(Hr, Sep)
set text item delimiters of AppleScript to ":"
set HrLst to text items of Hr
set text item delimiters of AppleScript to Sep
set HrOk to HrLst as text
set text item delimiters of AppleScript to ""
return HrOk
end HeureSansDeuxPoints</pre><hr />

Voilô
 

zevlac

Membre junior
14 Novembre 2001
21
0
Merci Fredo, le script marche bien (je pensais que la solution serait plus simple ;-)), mais il me manque un dernier point: comment faire créer un nouveau dossier et lui donner comme nom la date en question...
Merci!
 

bebert

Membre d’élite
Club MacG
9 Novembre 2000
4 990
333
Europe
Voici ma solution :
<font class="small">Code:</font><hr /><pre>
set aujourdhui to current date
set nomDossier to "Dossier " &amp; my datecourte(aujourdhui)

tell application "Finder"
make new folder at startup disk with properties {name:nomDossier}
end tell

on datecourte(today)
set mois to month of today
if mois = January then
set lemois to "01"
else if mois = February then
set lemois to "02"
else if mois = March then
set lemois to "03"
else if mois = April then
set lemois to "04"
else if mois = May then
set lemois to "05"
else if mois = June then
set lemois to "06"
else if mois = July then
set lemois to "07"
else if mois = August then
set lemois to "08"
else if mois = September then
set lemois to "09"
else if mois = October then
set lemois to "10"
else if mois = November then
set lemois to "11"
else if mois = December then
set lemois to "12"
end if
set jour to day of today
if jour &lt; 10 then
set lejour to "0" &amp; jour
else
set lejour to jour as string
end if
set lannee to year of today as string
set date_courte to lannee &amp; "/" &amp; lemois &amp; "/" &amp; lejour
end datecourte
</pre><hr />

 

FredoMkb

Membre confirmé
21 Avril 2003
190
5
Salut Sevlac

...dernier point: comment faire créer un nouveau dossier et lui donner comme nom la date en question...
Lorsque tu utilises le script que je t'ai proposé par double-clic, une boîte de dialog apparaît te demandant de désigner le dossier à renommer, il y a sur ce dialogue (normalement) un bouton permettant de créer à la volée un nouveau dossier à l'emplacement de ton choix. Il suffit donc de créer ce nouveau dossier sans changer le nom par défaut, le script se chargera de changer ce nom par celui que tu souhaitais...


Le script de Bebert est très bien, mais il ne permet pas, en l'état, de choisir l'emplacement de création du nouveau dossier, il peut être adapté assez simplement, mais s'il te convient ainsi, il n'y a pas à le retoucher...

Voilô
 

zevlac

Membre junior
14 Novembre 2001
21
0
Fredo, si si, le script de Bébert permet de créer un dossier à un endroit de son choix (il suffit de le modifier un petit peu). Par contre, je préfère éviter le passage par une boîte de dialogue... Ce script est destiné à importer des photos depuis un appareil numérique pour ma mère qui est trop agée pour se compliquer la vie avec des boîtes de dialogue... Merci pour tout!
 

bebert

Membre d’élite
Club MacG
9 Novembre 2000
4 990
333
Europe
zevlac a dit:
Fredo, si si, le script de Bébert permet de créer un dossier à un endroit de son choix (il suffit de le modifier un petit peu). Par contre, je préfère éviter le passage par une boîte de dialogue... Ce script est destiné à importer des photos depuis un appareil numérique pour ma mère qui est trop agée pour se compliquer la vie avec des boîtes de dialogue... Merci pour tout!
Arfff!!! Je devrais faire la même chose pour mon père qui m'appelle à chaque fois qu'il veut importer ses photos sur son mac !

Ben oui, il n'a pas encore Mac OS X et iPhoto…
 

Niconemo

Modo (toujours vivant !)
Modérateur
Club MacG
26 Juin 2001
6 447
455
Rhône-Alpes
Bonjour,

Je fais remonter ce sujet car il ressemble beaucoup à ce sur quoi je coince... je me disais donc qu'avec un petit coup de pouce je pourrais peut être me débrouiller.

Voilà : j'aurais besoin d'un script qui saurait choisir sur le bureau du Mac un fichier à partir de son nom et qui le renommerai en ajoutant la date à la fin (si possible sous la forme AAMMJJ, c'est plus pratique pour le tri)

Pour la première partie pas de problème :
<font class="small">Code:</font><hr /><pre> tell application "Finder"
activate
set name of document file "export.txt" of folder "Desktop" of folder "Moi" of folder "Users" of startup disk to "exportModif.txt"
end tell</pre><hr />

Mais après je dois avouer que
!

D'autre part, dans le code ci-dessus (généré automatiquement par Editeur de Script, le script ne fonctionnera que sur lebureau d'un user appelé "moi". Comment faire pourque ça marche sur tous les Macs (sous OS X).

Je regrette de ne pas avoir 3 ou 4 vies pour ajouter AppleScript à tout ce que je voudrais apprendre, alors toute aide sera la bienvenue
Merci d'avance.
 

sined_marlouf

Membre confirmé
13 Janvier 2005
268
14
Bonjour.

Alors voilà, mon problème ressemble un peu à celui traité sur ce fil.

Je sauvegarde systématiquement les posts que je publie sur les forums.

Pour cela j&#8217;utilise un dossier nommé "Posts svgde".

Ce que j&#8217;aimerais, c&#8217;est que le nom du fichier se détermine automatiquement, sous forme de date, tout simplement.

Format _AAAA-MM-DD - HH:MM, de manière que le classement se fasse naturellement.

J&#8217;ai essayé de glisser-dépôser la date de la barre des menu dans la fenêtre d&#8217;enregistrement du fichier, mais cela ne fonctionne pas.

J&#8217;ai aussi essayé d&#8217;utiliser la fonction "Dossier intelligent", mais l&#8217;intelligence des dossier en question n&#8217;est pas celle à laquelle je m&#8217;attendais.

Par exemple le titre de ce post porte chez moi le nom _2010-03-16 - 10:17.

Merci si quelqu&#8217;un peut m&#8217;aider.

Bonne journée.

---------- Nouveau message ajouté à 10h23 ---------- Le message précédent a été envoyé à 10h17 ----------

Oups j’oubliais une info importante :

Mes messages sont évidemment composés dans TextEdit, puis copiés-collés dans la fenêtre de postage du forum.

C’est le document TextEdit que je sauvegarde sur mon ordi...

Nateur.

Encore merci.
 
A

Anonyme

Invité
Bonsoir,

Voici un script qui renomme les fichiers .txt déposés dans un dossier.
Bloc de code:
on adding folder items to le_dossier after receiving theseItems
	repeat with i in theseItems
		set f to quoted form of POSIX path of i
		do shell script "f=" & f & "
year=$(/bin/date \"+_%Y\")
d=$(/bin/date \"+_%Y-%m-%d - %Hh%Mm%S\")
name=${f##*/};
if [[ \"$name\" != $year* && \"$name\" = *.txt ]]; then
 dir=${f%/*}
/bin/mv \"$f\"  \"$dir/$d.txt\"
fi"
		delay 1
	end repeat
end adding folder items to
Mais le caractère : ne peut être utilisée dans un nom ,car il est réservé par OS X.
Aussi, si tu enregistres deux fichiers dans la même minute, il y aura une erreur, car le nom sera le même, solution c'est d'ajouter les secondes
Le format de date du script est : _2010-03-16 - 10h17m13
Enregistre ce script dans le dossier "/Library/Scripts/Folder Action Scripts/"

Configure les actions de dossiers.
Ajoute le dossier "Posts svgde" , assigne le script à ce dossier.
 
A

Anonyme

Invité
Bonsoir,

Voici un script qui renomme les fichiers .txt déposés dans un dossier.
J'avais oublié de dire que le nom du fichier lors de l'enregistrement du document TextEdit n'a pas d'importance, enregistre-le avec le nom par défaut, le script de l'action de dossier va le renommer.
 

sined_marlouf

Membre confirmé
13 Janvier 2005
268
14
Wow vraiment super impressionnant !

J’ai un peu galéré pour faire les manips, mais tout est parfaitement indiqué, en fait.

Bravo et merci.

Le seul piti problème, c’est que si je sauvegarde mon message plusieurs fois, ça me fait autant de versions... je veux dire que lorsque j’enregistre, le document apparaît bien dans le dossier "posts svgde" avec son nom date/heure, mais que dans TextEdit la barre de titre du doc continue d’afficher "sans titre", aussi longtemps que je n’ai pas fermé le doc.

Mais c’est pas grave, j’ai déjà un truc qui marche à bloc, grâce à ce script de nomination automatique, vraiment top !

Mac_Jac, vous devriez penser à le commercialiser pour les vedettes qui rêvent de se faire automatiquement nominer aux Oscars, aux Gramy et autre Césars... tellement c’est imparable ;-)
 
A

Anonyme

Invité
Bonjour,

Le seul piti problème, c&#8217;est que si je sauvegarde mon message plusieurs fois, ça me fait autant de versions...
Ici sur Mac OS X 10.5.8 je n'ai pas ce problème.
Lors de l'enregistrement, TextEdit reconnaît que le fichier à changer de nom et affiche un dialogue avec trois boutons ("enregistrer sous", "annuler" et "enregistrer" ), je presse la touche Entrée pour l'enregistrer dans le fichier dont le nom a été modifié.

Quelle version de Mac OS X avez-vous ?
 

sined_marlouf

Membre confirmé
13 Janvier 2005
268
14
iBook G4 os 10.4.11...

Dois-je essayer d'updater le système ?

(En espérant que ça ne fasse pas exploser la machine...)
 

ceslinstinct

Membre d’élite
Club MacG
10 Août 2004
2 069
111
20
Bonsoir,

Voici un script qui renomme les fichiers .txt déposés dans un dossier.
Bloc de code:
on adding folder items to le_dossier after receiving theseItems
	repeat with i in theseItems
		set f to quoted form of POSIX path of i
		do shell script "f=" & f & "
year=$(/bin/date \"+_%Y\")
d=$(/bin/date \"+_%Y-%m-%d - %Hh%Mm%S\")
name=${f##*/};
if [[ \"$name\" != $year* && \"$name\" = *.txt ]]; then
 dir=${f%/*}
/bin/mv \"$f\"  \"$dir/$d.txt\"
fi"
		delay 1
	end repeat
end adding folder items to
Bonjour

Testé ton code avec Léopard 10.5.8, me donne que les dates à chaque fichier.

Je comprend pas la boucle repeat, chez moi plus de 3 fichiers alors s'arrête de renommer.

J'ai cherché pourquoi, et c'est le réglage du polling interval de Folder Actions Dispacher.app qui créer ce problème.

J'ai écrit le code qu'en AppleScript et même résultat avec les dates (n'aime pas la temporisation), par contre par numérotation j'ai pas de problème.

Plus le polling interval est grand, plus de fichiers sont gérés.

5 m'en gère 2, 10 lui me gère les 6 créés.

Ton code en application avec de multiples sélection fonctionne (a part les noms qu'il mémorise pas, mais seulement les dates).

Cordialement

@+
 
A

Anonyme

Invité
Bonsoir,
iBook G4 os 10.4.11...

Dois-je essayer d'updater le système ?

(En espérant que ça ne fasse pas exploser la machine...)
Non ce n'est pas recommandé, le iBook n'a pas assez de mémoire.

Voici la solution, tester sur Mac OS X 10.4.11
Bloc de code:
on adding folder items to le_dossier after receiving theseItems
	repeat with i in theseItems
		set f to POSIX path of i
		set newPath to do shell script "f=" & (quoted form of f) & "
year=$(/bin/date \"+_%Y\");sleep 1
d=$(/bin/date \"+_%Y-%m-%d - %Hh%Mm%S\")
name=${f##*/};
if [[ \"$name\" != $year* && \"$name\" = *.txt ]]; then
 dir=${f%/*}
 /bin/mv \"$f\"  \"$dir/$d.txt\"
 echo \"$dir/$d.txt\"
fi"
		
		if newPath is not "" then
			tell application "System Events" to exists process "TextEdit" -- vérifie si TextEdit est ouvert
			if the result then tell application "TextEdit"
				repeat with tDoc in (get documents)
					if (get path of tDoc) = f then set path of tDoc to newPath -- modifie le chemin et le nom du document
				end repeat
			end tell
		end if
	end repeat
end adding folder items to
Le script vérifie le chemin original du document TextEdit, si le chemin est égal au fichier dont le nom est modifié
Il modifiera le chemin du document et le nom du document sera automatiquement changé.

---------- Nouveau message ajouté à 17h37 ---------- Le message précédent a été envoyé à 17h06 ----------

Bonjour,

Bonjour

Testé ton code avec Léopard 10.5.8, me donne que les dates à chaque fichier.
Oui, il renomme les fichiers avec seulement la date, c'est ce que "sined_marlouf" voulait.
Le name dans le shell sert à vérifier que le nom ne contient pas _ + l'année, pour ne pas le renommer plusieurs fois.

Je comprend pas la boucle repeat, chez moi plus de 3 fichiers alors s'arrête de renommer.

J'ai cherché pourquoi, et c'est le réglage du polling interval de Folder Actions Dispacher.app qui créer ce problème.

J'ai écrit le code qu'en AppleScript et même résultat avec les dates (n'aime pas la temporisation), par contre par numérotation j'ai pas de problème.

Plus le polling interval est grand, plus de fichiers sont gérés.

5 m'en gère 2, 10 lui me gère les 6 créés.
Oui, je comprends ça, je ne recommande à personne de renommer des fichiers avec une action de dossier, si les fichiers ne sont pas déplacés dans un autre dossier pour minimiser les erreurs et les bogues.

Mais pour sined_marlouf, il n'y a aucun probléme sur Mac OS X 10.4.11, j'ai essayé avec 6 fichiers en même temps.
Mais s'il était sur Leopard, c'est seulement pour enregistrer des posts dans ce dossier, les risques qu'il édite plus de trois posts à la fois sont minimes.
 

sined_marlouf

Membre confirmé
13 Janvier 2005
268
14
Yes, ça marche.

J’ai juste changé le ".txt" en ".rtf" dans les deux scripts, parce que j’enregistre par défaut en rich text format...

Évidemment, comme j’avais oublié de le faire aussi dans le second script, je croyais au départ qu’il ne marchait pas.

Mais il a l’air de très bien fonctionner : il reste sur le même nom de fichier lors des sauvegardes... cool. (J’ai essayé 5 fois de suite, de manière très rapide).

La barre de titre aussi se met à jour, la classe.

Chuis vraiment bluffé.

Il ne me reste plus qu’à bien expliquer comment ce dossier fonctionne, parce que si un jour quelqu’un essaye de l’utiliser sans être averti, il risque de me faire un procès en sorcellerie !

Bonne journée, et à bientôt pour de nouvelles aventures.

")
 
A

Anonyme

Invité
Yes, ça marche.

J’ai juste changé le ".txt" en ".rtf" dans les deux scripts, parce que j’enregistre par défaut en rich text format...
Parfait, content que ça marche. :up:

Il ne me reste plus qu’à bien expliquer comment ce dossier fonctionne, parce que si un jour quelqu’un essaye de l’utiliser sans être averti, il risque de me faire un procès en sorcellerie !
Oui :D