Applescript: comment nommer un dossier avec la date?

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.

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

:up:



Bonsoir,

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,


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.


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

:up:
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).

Bloc de code:
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.

@+
 
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…

:(
 
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…

:(
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?
Bloc de code:
--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



Très bonne année pour 2012

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

@+
 
Dernière édition:
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... :D

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

capturedcran20120103011.png
capturedcran20120103011.th.png
capturedcran20120103011.png

capturedcran20120103011.png
 
Dernière édition:
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... ;)
 
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 : [email protected]
:zen:
 
Dernière édition:
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.

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

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


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

@+
 
Dernière édition:
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é :D.

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.
 
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
 
Oui c'est pour ça que j'avais donné mon adresse mail [email protected].

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 :siffle:

Y'a des jours comme ça...

Merci encore à vous et à ceslinstinct.

:up:
 
Bon mais là ya un truc bizarre.

J’avais appliqué deux scripts distincts à un même dossier, de manière que les documents que j’y enregistre prennent automatiquement comme nom la date et l’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’est pour ça que j’ai été obligé d’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’un sait comment réécrire le script de manière qu’il nomme automatiquement le fichier à l’enregistrement, en lui donnant comme nom la date et l’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 
Bon mais là ya un truc bizarre.

J’avais appliqué deux scripts distincts à un même dossier, de manière que les documents que j’y enregistre prennent automatiquement comme nom la date et l’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’est pour ça que j’ai été obligé d’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’un sait comment réécrire le script de manière qu’il nomme automatiquement le fichier à l’enregistrement, en lui donnant comme nom la date et l’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 
 
Bon mais là ya un truc bizarre. 

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

Bloc de code:
-- 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 %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
 
Dernière édition:
Ben si y marche impeccable ton script...

Merci tou meutch ! :D

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

12˙01˙24 - 16h 09m 50s.rtfd

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

_2012-01-24 - 11h30m32.rtf

C'est possible ? :D

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

Et encore bravo !

:zen:

Edit : pas moyen d'arranger mon précédent post...
 
Dernière édition:
Ben si y marche impeccable ton script...

Merci tou meutch ! :D

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

12˙01˙24 - 16h 09m 50s.rtfd

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

_2012-01-24 - 11h30m32.rtf

C'est possible ? :D

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

Et encore bravo !

:zen:
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
Bloc de code:
set date_ to (do shell script "date +\"_ %y-%m-%d - %Hh %Mm %Ss\"") as string
où par l'année sur 4 nombres
Bloc de code:
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
@+
 
Dernière édition: