# Applescript: comment nommer un dossier avec la date?



## zevlac (8 Janvier 2004)

Comment puis-je donner comme nom à un dossier la date (et l'heure) avec Applescript?
Merci d'avance!


----------



## FredoMkb (8 Janvier 2004)

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 (9 Janvier 2004)

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 (9 Janvier 2004)

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 />


----------



## zevlac (9 Janvier 2004)

Merci Bebert, c'est exactement ce que je cherchais! Bravo!


----------



## FredoMkb (10 Janvier 2004)

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 (12 Janvier 2004)

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 (12 Janvier 2004)

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


----------



## zevlac (16 Janvier 2004)

Bon, bah Bébert, tu sais ce qui te reste à faire!


----------



## Niconemo (27 Mai 2004)

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 (16 Mars 2011)

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.


----------



## Anonyme (17 Mars 2011)

Bonsoir,

Voici un script qui renomme les fichiers *.txt* déposés dans un dossier.

```
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.


----------



## Anonyme (18 Mars 2011)

Mac_Jac a dit:


> 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 (19 Mars 2011)

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 ;-)


----------



## Anonyme (20 Mars 2011)

Bonjour,



sined_marlouf a dit:


> 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 (20 Mars 2011)

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 (20 Mars 2011)

Mac_Jac a dit:


> Bonsoir,
> 
> Voici un script qui renomme les fichiers *.txt* déposés dans un dossier.
> 
> ...


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

@+


----------



## Anonyme (20 Mars 2011)

Bonsoir,


sined_marlouf a dit:


> 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*

```
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,



ceslinstinct a dit:


> 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.



ceslinstinct a dit:


> 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.
> 
> ...


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 (21 Mars 2011)

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.

")


----------



## Anonyme (21 Mars 2011)

sined_marlouf a dit:


> 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. 



sined_marlouf a dit:


> 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


----------



## sined_marlouf (31 Décembre 2011)

sined_marlouf a dit:


> (...)
> 
> Bonne journée, et à bientôt pour de nouvelles aventures.
> 
> ")



Bon là, sous Lion, jessaye denregister le script mais ça coince y veut pas... il dit quil peut pas...

Le script doit-il être écrit autrement ou cest moi qui cafouille ?

Merci, et bonne fin dannée !


----------



## ceslinstinct (1 Janvier 2012)

sined_marlouf a dit:


> Bon là, sous Lion, jessaye denregister le script mais ça coince y veut pas... il dit quil peut pas...
> 
> Le script doit-il être écrit autrement ou cest moi qui cafouille ?
> 
> Merci, et bonne fin dannée !


Bonjour

De quel script tu parle, il y en a plusieurs?

Quel est ta recherche (mémoriser un fichier en éliminant le même fichier, où garder toutes les copies modifiées (souvent utiles à certains moments))?

*Bonne année* *à vous tous lecteurs de ce post*.

@+


----------



## sined_marlouf (1 Janvier 2012)

Voilà le script que je n'arrive pas à faire scripter sous Lion 

Il nomme automatiquement le fichier que j'enregistre dans un dossier spécial, en lui donnant comme nom la date et l'heure à laquelle il a été enregistré.

Ce dossier permet de conserver vers soi une copie de tout ce qu'on émet sur le net.

Là que j'l'ai plus il manque.

Mais bonne année bien-sûr.







Mac_Jac a dit:


> Bonsoir,
> 
> Non ce n'est pas recommandé, le iBook n'a pas assez de mémoire.
> 
> ...


----------



## ceslinstinct (2 Janvier 2012)

sined_marlouf a dit:


> Voilà le script que je n'arrive pas à faire scripter sous Lion
> 
> Il nomme automatiquement le fichier que j'enregistre dans un dossier spécial, en lui donnant comme nom la date et l'heure à laquelle il a été enregistré.
> 
> ...


Bonjour

Je ne suis pas Lyonnais, donc toujours avec Léopard.

Essais ce code pour voir (c'est en action de dossier, et ne gère que les fichiers avec une extension).


```
on adding folder items to le_dossier after receiving theseItems
	
	tell application "Finder"
		repeat with i in theseItems
			set {extension_, nouvNom} to {name extension of i, (do shell script "date +\"_%Y-%m-%d   %Hh%Mm%Ss\"") as string}
			
			if extension_ is not "" then
				set name of file i to nouvNom & "." & extension_
				delay 1 -- Pour éviter un même temps en secondes pour 2 fichiers
			end if
			
		end repeat
	end tell
	
end adding folder items to
```

J'ai des doutes que ça fonctionne avec lion, mais qui tente rien ne sauras jamais si ça marche.

Je pense pas que ce fauve, ce code lui cause des problèmes.

@+


----------



## sined_marlouf (2 Janvier 2012)

Voici le message que j'obtiens lorsque je tente d'enregistrer le script :

Le document « Sans titre » na pas pu être enregistré comme « datename.scpt ».

Le même que précédemment


----------



## ceslinstinct (2 Janvier 2012)

sined_marlouf a dit:


> Voici le message que j'obtiens lorsque je tente d'enregistrer le script :
> 
> Le document « Sans titre » n&#8217;a pas pu être enregistré comme « datename.scpt ».
> 
> Le même que précédemment&#8230;


Bonsoir

Deux solutions pour te répondre.

La première, attendre un utilisateur de Lion qui confirme que mon code cité plus haut ne fonctionne pas avec ce système (donc AppleScript ne fait plus partie des applications de Lion).

Deuxième solution, tu aurais pas un problème avec l'application AppleScript.

C'est un code a enregistrer en mode texte (extension .scpt) et non en application.

PS:

Par curiosité, fait une copie d'écran sur le bureau et avec le code ci-dessous dans l'éditeur de script bouton exécuter et sélectionne cette image.

Dit moi si le nom change en date?

```
--on adding folder items to le_dossier after receiving theseItems
set i to choose file
tell application "Finder"
	--	repeat with i in theseItems
	set {extension_, nouvNom} to {name extension of i, (do shell script "date +\"_%Y-%m-%d   %Hh%Mm%Ss\"") as string}
	
	if extension_ is not "" then
		set name of file i to nouvNom & "." & extension_
		delay 1 -- Pour éviter un même temps en secondes pour 2 fichiers
	end if
	
	--	end repeat
end tell

--end adding folder items to
```

Si ça marche pas, c'est que Lion n'utilise pas AppleScript, donc pour moi aucun regret de ne pas passer à ce système.

Deux réponses à te donner.

*Je t'aime*

où

Très *bonne année pour 2012*

pour mon goût je préfère la deuxième réponse

@+


----------



## sined_marlouf (3 Janvier 2012)

Ben toi aussi je t'aime bien mais j'ai pas encore fait mon come back et sexuellement ça risque de pas le faire... ceci dit bonne année encore... 

Alors bon j'ai fait une copie d'écran du message d'erreur émis par l'éditeur de script.


----------



## CathyGYM (3 Janvier 2012)

Pour info, j'ai essayé ce script chez moi, sous Lion, et çà fonctionne très bien...

Cependant, j'ai eu des soucis avec une application qui utilise des scripts, et que j'ai transmis à plusieurs collègues. Chez certains, tout fonctionne très bien, alors que chez d'autres, il est impossible de faire fonctionner quoi que ce soit.
Il y a donc des comportements bizarres avec les scripts sous Lion. Je n'ai pas réussi à comprendre pourquoi pour l'instant, mais si quelqu'un a des idées, ce la m'intéresse...


----------



## sined_marlouf (3 Janvier 2012)

Ah le script fonctionne sur certains lions et pas sur d'autres ?... C'est bon à savoir...

Lorsque j'ai copié le script dans une nouvelle fenêtre, et qu'alors je clique sur "exécuter" l'éditeur me demande d'ouvrir un autre fichier script... je ne comprends pas bien pourquoi.

Et puis je ne l'ai pas fait de peur de tout bousiller.

Ou alors peut-être pourriez-vous me faire parvenir le fichier script en pièce jointe à télécharger, je ne sais pas s'il y a moyen, de manière que je voie s'il fonctionne lorsque je l'applique au dossier "Post SVGDE" ?

Merci en tous cas.


EDIT : peut-être pourriez-vous me l'envoyer à cette adresse mail, si vous disposez vous aussi d'une adresse mail composée selon votre avatar : sinedmarlouf@yahoo.fr


----------



## CathyGYM (3 Janvier 2012)

Ok j'envoie ça ce soir... Là, je suis partie et je n'ai que mon iPhone...


----------



## ceslinstinct (3 Janvier 2012)

sined_marlouf a dit:


> Ah le script fonctionne sur certains lions et pas sur d'autres ?... C'est bon à savoir...
> 
> Lorsque j'ai copié le script dans une nouvelle fenêtre, et qu'alors je clique sur "exécuter" l'éditeur me demande d'ouvrir un autre fichier script... je ne comprends pas bien pourquoi.
> 
> ...


Bonjour

Le code bouton compiler, lui fait prendre des couleurs.
Bouton Exécuter te demande de sélectionner un fichier, ce que tu fait et tu valide.
Le nom de ce fichier doit âtre alors remplacé par une date.

C'est simplement un code de test pour savoir si ça fonctionne.
Si Oui alors en faire une action de dossier.

Si un refus d'enregistrement par l'éditeur de scripts, et que le code fonctionne, alors se passer de lui pour l'enregistrement.

C'est simple à faire (pour l'enregistrement en extension .scpt) testé avec Léopard 10.5.8 sans problème.

@+


----------



## sined_marlouf (3 Janvier 2012)

Pour info j'ai réussi la manip en passant par textedit, de créer un script sans passer par l'éditeur.

J'ai même réussi tout à l'heure à modifier le nom d'un fichier teste en cliquant "exécuter"

Mais là ça marche plus du tout, j'ai même réussi à faire bugger l'éditeur de script, j'ai dû le forcer à quitter.

En fait quand j'ouvre dans l'éditeur le script créé via textedit, il y a des lignes suppémentaires au début, que je ne peux pas retirer, car alors je n'ai pas moyen de l'enregistrer.


----------



## ceslinstinct (3 Janvier 2012)

sined_marlouf a dit:


> Pour info j'ai réussi la manip en passant par textedit, de créer un script sans passer par l'éditeur.


Bonjour

C'est normal que ça marche pas, mauvais réglage.

Un Copier du code (c'est du texte).
Ouvrir textEdit
Barre des menus/Format/Convertir en format texte (évite tout ce qui est ajouté en format RTF et RTFD).
Coller le texte qui se trouve dans le Presse-Papiers.
Enregistrer sur le bureau ce fichier.
Sélectionnez ce fichier et command i
Dans nom et extension remplacer .txt par .scpt et acceptez la modification, alors l'icône de fichier se trouve avec un parchemin, donc un fichier de l'éditeur de scripts (sans passer par lui).

Ne fonctionne que pour ce genre de fichier, et non un code à compiler en application.

Ca ne marche que si le code est bien écrit, l'éditeur de scripts ne fait aucun contrôles sur les erreurs de codage.

*A ne pas faire, car non prévu par Apple*.

Que ça marche avec Lion, j'ai des doutes car Apple a sans doute modifié ce bogue.

A toi de confirmer que ça marche plus avec Lion.

@+


----------



## sined_marlouf (3 Janvier 2012)

Je viens de rentrer là. Et pendant que j'étais dehors, j'ai pensé à un truc : pourquoi ne pas simplement reprendre le script dans mon iBook et le recopier dans mon mac mini ?

Ben oui c'est pas bête ça... Excusez-moi de vous avoir dérangé .

Là ça y est ça marche, et le coup du dossier qui nomme automatiquement les fichiers qu'on y enregistre, pour sauvegarder ce que vous postez sur les forums, je vous le conseille.

Voilà, merci de votre aide en tous cas, je suis sûr qu'on y serait arrivé, mais je préfère faire simple, puisqu'en plus ça marche.


----------



## CathyGYM (3 Janvier 2012)

Bonsoir,
Je n'arrive pas à mettre le fichier en pièce jointe... Mais j'ai l'impression que ton problème est résolu. Si toutefois, tu souhaites tout de même récupérer le fichier scpt qui fonctionne sous Lion, envoies moi ton adresse mail en message perso.  
Bon courage


----------



## sined_marlouf (4 Janvier 2012)

Oui c'est pour ça que j'avais donné mon adresse mail sinedmarlouf@yahoo.fr.

Mais en fait entre temps j'ai un peu arrêté d'être bête et j'ai trouvé la solution qui était tellement évidente que je suis allé chercher la complication : j'avais dès le départ le bon script dans un autre ordi 

Y'a des jours comme ça...

Merci encore à vous et à ceslinstinct.


----------



## sined_marlouf (24 Janvier 2012)

Bon mais là ya un truc bizarre.

J&#8217;avais appliqué deux scripts distincts à un même dossier, de manière que les documents que j&#8217;y enregistre prennent automatiquement comme nom la date et l&#8217;heure du moment où ils sont enregistrés.

Donc il y a un script pour les fichiers ".rtf", et un autre script pour les fichiers ".rtdf".

Ces deux scripts ont la même fonction, mais je suis incapable de compiler dans le script lui-même la redondance de cette fonction.

C&#8217;est pour ça que j&#8217;ai été obligé d&#8217;appliquer deux actions de scripts au même dossier, et il me semble bien que ça a fonctionné un moment...

Mais là ça marche plus...

Alors voilà : si quelqu&#8217;un sait comment réécrire le script de manière qu&#8217;il nomme automatiquement le fichier à l&#8217;enregistrement, en lui donnant comme nom la date et l&#8217;heure, et que ce script fonctionne aussi bien pour un fichier ".rtf" que pour un fichier ".rtdf", ce serait archi cool.

Pour rappel, je donne ici le code des deux scripts à réunir...

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\" = *.rtf ]]; then
 dir=${f%/*}
 /bin/mv \"$f\"  \"$dir/$d.rtf\"
 echo \"$dir/$d.rtf\"
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
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\" = *.rtfd ]]; then
 dir=${f%/*}
 /bin/mv \"$f\"  \"$dir/$d.rtfd\"
 echo \"$dir/$d.rtfd\"
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
Merci &#65532;
Bon mais là ya un truc bizarre.

J&#8217;avais appliqué deux scripts distincts à un même dossier, de manière que les documents que j&#8217;y enregistre prennent automatiquement comme nom la date et l&#8217;heure du moment où uils sont enregistrés.

Donc il y a un script pour les fichiers ".rtf", et un autre script pour les fichiers ".rtdf".

Ces deux scripts ont la même fonction, mais je suis incapable de compiler dans le script lui-même la redondance de cette fonction.

C&#8217;est pour ça que j&#8217;ai été obligé d&#8217;appliquer deux actions de scripts au même dossier, et il me semble bien que ça a fonctionné un moment...

Mais là ça marche plus...

Alors voilà : si quelqu&#8217;un sait comment réécrire le script de manière qu&#8217;il nomme automatiquement le fichier à l&#8217;enregistrement, en lui donnant comme nom la date et l&#8217;heure, et que ce script fonctionne aussi bien pour un fichier ".rtf" que pour un fichier ".rtdf", ce serait archi cool.

Pour rappel, je donne ici le code des deux scripts à réunir...

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\" = *.rtf ]]; then
 dir=${f%/*}
 /bin/mv \"$f\"  \"$dir/$d.rtf\"
 echo \"$dir/$d.rtf\"
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
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\" = *.rtfd ]]; then
 dir=${f%/*}
 /bin/mv \"$f\"  \"$dir/$d.rtfd\"
 echo \"$dir/$d.rtfd\"
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
Merci &#65532;


----------



## ceslinstinct (24 Janvier 2012)

sined_marlouf a dit:


> Bon mais là ya un truc bizarre. &#65532;



Bonjour

Une action de dossier qui renomme les fichiers *rtf* & *rtfd* par date de dépot en une seule fois, ne touche pas aux noms des autres fichiers.

A tester avec *Lion*


```
-- DATE FICHIER  rtf & rtfd
on adding folder items to le_dossier after receiving theseItems
	
	tell application "Finder"
		repeat with lue in theseItems
			set date_ to (do shell script "date +\" %y&#729;%m&#729;%d  - %Hh %Mm %Ss\"") as string
			set Extension_ to name extension of lue
			
			if Extension_ is "rtf" or Extension_ is "rtfd" then
				set nouvNom to (date_ & "." & Extension_) as string
				set name of file lue to nouvNom
				delay 1 -- évite les doublons de dates (secondes)
			end if
			
		end repeat
	end tell
	
end adding folder items to
```

Testé avec Léopard 10.5.8

Dit nous si ça marche.

PS: J'avais pas fait attention que tu désire changer les noms, en passant obligatoirement par TextEdit.

Donc mon code te seras inutile, je laisse la place à d'autres personnes plus qualifiées que moi sur l'utilisation de TextEdit.

Salut


----------



## sined_marlouf (24 Janvier 2012)

Ben si y marche impeccable ton script...

Merci tou meutch ! 

Juste un petit truc à arranger :  ton script donne ce type de nom :

 12&#729;01&#729;24  - 16h 09m 50s.rtfd

Alors que jusqu'à présent le format était de ce type :

_2012-01-24 - 11h30m32.rtf

C'est possible ? 

Je viens de voir que mon précédent message est en vrac... je rectifie ça tout de suite...

Et encore bravo !



Edit : pas moyen d'arranger mon précédent post...


----------



## ceslinstinct (24 Janvier 2012)

sined_marlouf a dit:


> Ben si y marche impeccable ton script...
> 
> Merci tou meutch !
> 
> ...


Bonjour

Comme séparateur de date, j'utilise l'accent point pour majuscules (existe pas sur le clavier Français, mais existe dans le code ASCII).
C'est pour éviter d'utiliser un caractère qui risque d'être utilisé par le Finder.

Remplace le par - et ça marche aussi.

Je te présente *mon code*, à toi de le modifier pour que ce soit le tien.

Après ta modifications, je pense qu'il devrais marcher chez toi avec Lion.

Ton code, pourquoi faire compliqué quand on peu faire simple.

PS: cette ligne modifiée

```
set date_ to (do shell script "date +\"_ %y-%m-%d - %Hh %Mm %Ss\"") as string
```
où par l'année sur 4 nombres

```
set date_ to (do shell script "date +\"_%F' - %Hh %Mm %Ss\"") as string
```

Mon erreur, pour l'année j'utilisais y (minuscule donc 2 nombres) à la place de Y (majuscule donc année sur 4 nombres)

le F majuscule lui donne yyyy mm dd
@+


----------



## sined_marlouf (24 Janvier 2012)

Ben je crois que j'y suis arrivé aussi... 

Ça donne :


```
-- DATE FICHIER  rtf & rtfd
on adding folder items to le_dossier after receiving theseItems
    
    tell application "Finder"
        repeat with lue in theseItems
            set date_ to (do shell script "date +\"_%Y-%m-%d - %Hh%Mm%S\"") as string
            set Extension_ to name extension of lue
            
            if Extension_ is "rtf" or Extension_ is "rtfd" then
                set nouvNom to (date_ & "." & Extension_) as string
                set name of file lue to nouvNom
                delay 1 -- évite les doublons de dates (secondes)
            end if
            
        end repeat
    end tell
    
end adding folder items to
```

Ça y est je parle comme une pomme !


----------



## ceslinstinct (25 Janvier 2012)

sined_marlouf a dit:


> Ben je crois que j'y suis arrivé aussi...
> 
> Ça y est je parle comme une pomme !


Bonjour

Si un jour tu déplace beaucoup de fichiers tu devrais avoir cette alerte:

*Erreur d'AppleScript*
Erreur dans Finder : Délai dépassé pour un AppleEvent.

Il faudra alors régler la temporisation.

Normalement avec une action de dossiers on évite les très gros déplacements de fichiers, donc tu devrais avoir aucun problème.

@+


----------

