Archives actuelles avec moteur de recherche
N'hésitez pas à vous inscrire à la liste : http://listes.patpro.net/mailman/listinfo/applescript_fr

Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle

De : (Liste AppleScript francophone) <applescript_fr@xxxxxxx.net>
À : "(Liste AppleScript francophone)" <applescript_fr@xxxxxxx.net>
Date : samedi 2 mars 2002 06:01
Objet : applescript_fr Digest #436

        Liste AppleScript francophone Digest #436

 1) Re: si un fichier est rempli
    by "Serge.Tegta" <Serge.Tegta@xxxxxxx.fr>
 2) Re: obtenir le nom d'un fichier ???
    by Daniel Varlet <varlet@xxxxxxx.ch>
 3) Re: obtenir le nom d'un fichier ???
    by Daniel Varlet <varlet@xxxxxxx.ch>
 4) Re: obtenir le nom d'un fichier ???
    by patpro <patpro@xxxxxxx.net>
 5) Re: si un fichier est rempli
    by Daniel Varlet <varlet@xxxxxxx.ch>
 6) Re: nico, le retour
    by Dominique <listeasdomi@xxxxxxx.fr>
 7) Re: [AS]numeroté des fichier en fonction de	la date de creation
    by "Serge.Tegta" <Serge.Tegta@xxxxxxx.fr>
 8) Re: [AS]numeroté des fichier en fonction de 	la date de creation
    by Daniel Varlet <varlet@xxxxxxx.ch>






De : "Serge.Tegta" <Serge.Tegta@xxxxxxx.fr> Date : Fri, 01 Mar 2002 12:33:38 +0100 Objet : [AS] Re: si un fichier est rempli Bonjour Jutilise ce script si un dossier est rempli il en crée un autre et bouge tout les fichiers de mon dossier rempli dans le bnouveau comme voila -- si le dossier est rempli set theFldr to "ROBIN DES BOIS:pommes:pommes_01" tell application "Finder" set nbr to count every item in folder theFldr -- fichiers + dossiers if nbr > 149 then set pFldr to container of folder theFldr make new folder at pFldr with properties {name:"pommes" & the date_slug} tell application "Finder" activate select {every item of folder "pommes_01" of folder "pommes" of startup disk} move selection to folder ("pommes" & the date_slug) of folder "pommes" of startup disk end tell end if end tell remarques : date_slug c'est des variable date defini avant. robin des bois c'est mon startup disk Mais il y a un probleme. Le script doit être mal ecris, car il ne marche pas a tout les coup. Par exemple il marche si je le lance depui l'editeur de script, mais tres aleatoirement depuis ido script sheduler Voyez vous un probleme de syntaxe, une maladresse dans ce script ????? avez vous un moyen de fortcer le script a faire ce que je lui demande de faire ? a+ Merci G

De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Fri, 1 Mar 2002 11:58:59 +0100 Objet : [AS] Re: obtenir le nom d'un fichier ??? À 22:43 +0100 le 28.02.2002, patpro écrivait au sujet de "[AS] Re: obtenir le nom d'un fichier ???" : > le 28/02/02 21:30, Daniel Varlet à varlet@xxxxxxx.ch a écrit : > >> À 20:47 +0100 le 28.02.2002, Serge.Tegta écrivait au sujet de "[AS] Re: >> obtenir le nom d'un fichier ???" : >>> Bonjour >>> >>> Comment fait t'on pour obtenir le nom d'un fichier contenu dans un osier le >>> mettre dans une variable, puis passer au suivant, etc, etc... ? >>> Je n'arrive pas a trouver la commande dans le dico du finder ??? >>> a+ >>> g >> >> name -> propriété de beaucoup d'éléments du finder . >> >> set d to alias "dd:dossier:dossier:" >> >> tell app "finder" >> set l2 to every file of item d >> set l to {} >> repeat with i from 1 to count l2 >> set the end of l to name of item i >> end >> end >> l > > mdr :) Pourquoi ? ( ton innocent) > ce serait pas plus lisible avec un truc comme ca ? > > set MonDossier to alias "dd:dossier:dossier:" > > tell app "finder" > set ListeFichier to every file of item MonDossier > set ListeNom to {} > repeat with i from 1 to count ListeFichier > set the end of ListeNom to name of item i > end > end > ListeNom Pas vraiment. (ton neutre à tendance rasoir). L'essentiel étant les commandes, mises en valeur fort habilement (sic) par moi-même, en utilisant des noms de variables neutres a tendances rachitiques ;-))) (ton à l'huile. Pas pu résister, désolé) > enfin moi j'dis ça... :-))))) Voilà je me fais chopper par le fantôme des lieux dès que je mets à écrire une réponse en - de 30s ;-))) Ta 2 la chce ke j me mtte pa a ecrir cme sa. ... Mais t'as raison c'est encore mieux comme ça : set |la liste de fichiers dont je dois extraire les noms mais avec des critères non encore précisés| to every file of |un dossier contenant certainement plein de choses interressantes| Même dans une réponse à une grave attaque perso, j'en profite pour être pédagogique !!! ;-)))) A+ -- Daniel

De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Fri, 1 Mar 2002 13:43:31 +0100 Objet : [AS] Re: obtenir le nom d'un fichier ??? À 22:50 +0100 le 28.02.2002, Serge.Tegta écrivait au sujet de "[AS] Re: obtenir le nom d'un fichier ???" : [...snip...] > > Salut Daniel Salut Gilles, Demande au roi de la variable, le stand après la grande roue et les frites. Celui qui permet de gagner un ventilo de salon en un seul clik. Moi je fais la gueule. ;-))) > Voici le script certainement maladroit que j'ai fait pour récupérer les nom > de mes fichiers. > set theFldr to "alibaba:aa:a" > set d to alias "ALIBABA:aa:a:" J'aurais plutôt vu : set MonJoliDossier to -- nan !!!! j'arrête... ;-))) sans blagues : écrire le chemin d'un dossier sans - ":" final - est "dangereux", car tu risques de l'oublier et surtout, je n'en vois pas l'intérêt. On va simplement écrire (si j'ai bien compris : d= theFldr) : set theFldr to "ALIBABA:aa:a:" si tu as besoin de l'alias un jour ;-) : alias theFldr ou theFldr as alias tout simplement. > tell application "Finder" > set nbr to count every item in folder theFldr -- fichiers + dossiers > end tell Eh oui, le Finder se fiche complètement qu'il y ait un ":" final ou pas. Comment inculquer une certaine rigueur dans ce cas là.... J'te jure, on est pas aidé... Ce finder c'est vraiment un gros tas de... de cas particuliers ;-) plaçons cette commande hors de la boucle. Ça évite le calcul à chaque tour de boucle. > tell application "Finder" to set l to name of every file of item d tell application "Finder" to set l to name of every file of item theFldr pas la peine d'employer d, donc. et ici comme tu as une liste de tout les noms de fichiers du dossier theFldr, tu en profites pour les compter. Ça te donnera le nombre de fichiers. une pierre 2 coups. ça fait donc : tell application "Finder" set l to name of every file of item theFldr set nbr to count l end tell > set i to 1 > repeat while (i < nbr + 1) > copy item i of l to monnom > display dialog (monnom) > set i to i + 1 > end repeat tu peux faire plus simple (mais ta syntaxe est correcte. Je suis même étonné que tu ais choisi until) : remplacer (i < nbr + 1) par (i ≤ nbr) ou plus classique : repeat with i from 1 to nbr copy item i of l to monnom display dialog (monnom) end repeat ou encore (plus besoin de compter la liste) : repeat with i in l display dialog (contents of i) end <j'en rajoute...> Ce dernier bien que plus simple, est moins employé. Car i est retourné comme une référence et peut (si on ne fait pas attention) engendrer des erreurs. Par exemple lors de comparaisons : set maJolieListe to { "a","b","c"} repeat with i in maJolieListe if i = "b" then display dialog "i = b" end Pas de dialogue !!!! i est retourné comme  item 1 of {"a", "b", "c"} , item 2 of {"a", "b", "c"} , item 3 of {"a", "b", "c"}. Ce sont des références. la comparaison est souvent fausse si on a pas extrait la valeur de cette référence!!! soit avec la commande faite pour ça: contents of i soit avec la bonne coercition : i as string Ce qui fait donc : set maJolieListe to { "a","b","c"} repeat with i in maJolieListe set i to contents of i -- set i to i as string if i = "b" then display dialog "i = b" end ici le beau_dialogue de mon_joli_script de ce_mail_plein_de_bonheur s'affiche bien. (Désolé une rechute... ;-) </j'en rajoute...> Enfin on en arrive à ta question :-))))))))) > Mais c'est bizare car l'ordre de récupération n'est pas du premier au > dernier, mais à partir du deuxieme, le premier revenant ensuite. > Essaye tu va comprendre ce que je raconte. > Il y a un truc qui m'échappe. Comme je n'ai pas de dossier "ALIBABA:aa:a:" sous la main ;-) on va faire sans : [SCRIPT] set l to {1, 2, 3, 4, 5, 6} set nbr to count l set i to 1 repeat while (i < nbr + 1) copy item i of l to monnom display dialog monnom as string set i to i + 1 end repeat [/SCRIPT] Les dialogues s'affichent bien dans l'ordre ... C'est le Finder qui récupère les fichiers selon son ordre à lui. Qui est (il me semble... ®©™), par rapport à la date de modification des fichiers. Blabla fini ;-) A+ -- Daniel

De : patpro <patpro@xxxxxxx.net> Date : Fri, 01 Mar 2002 14:01:16 +0100 Objet : [AS] Re: obtenir le nom d'un fichier ??? le 1/03/02 13:43, Daniel Varlet à varlet@xxxxxxx.ch a écrit : > Demande au roi de la variable, le stand après la grande roue et les frites. > Celui qui permet de gagner un ventilo de salon en un seul clik. > Moi je fais la gueule. > ;-))) erf :-) > J'aurais plutôt vu : > set MonJoliDossier to -- nan !!!! j'arrête... ;-))) rahh :)) me fait pas rire comme ça, mes collègues comprennent pas faut que je leur raconte après :))) allez, bon W-E :) patpro -- plié de rire

De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Fri, 1 Mar 2002 14:10:37 +0100 Objet : [AS] Re: si un fichier est rempli À 12:33 +0100 le 01.03.2002, Serge.Tegta écrivait au sujet de "[AS] Re: si un fichier est rempli" : > Bonjour Salut Gilles, essayes de mettre les balises [SCRIPT] et [/SCRIPT] pour délimiter tes script ça facilite les choses pour tester. > Jutilise ce script si un dossier est rempli il en crée un autre et bouge > tout les fichiers de mon dossier rempli dans le bnouveau comme voila > -- si le dossier est rempli > > > set theFldr to "ROBIN DES BOIS:pommes:pommes_01" > > tell application "Finder" > set nbr to count every item in folder theFldr -- fichiers + dossiers > if nbr > 149 then > set pFldr to container of folder theFldr > make new folder at pFldr with properties {name:"pommes" & the > date_slug} > > > tell application "Finder" > activate > select {every item of folder "pommes_01" of folder "pommes" of > startup disk} > move selection to folder ("pommes" & the date_slug) of folder > "pommes" of startup disk > > end tell > > > end if > end tell > > remarques : > date_slug c'est des variable date defini avant. > robin des bois c'est mon startup disk > > Mais il y a un probleme. Le script doit être mal ecris, car il ne marche pas > a tout les coup. > Par exemple il marche si je le lance depui l'editeur de script, mais tres > aleatoirement depuis ido script sheduler > Voyez vous un probleme de syntaxe, une maladresse dans ce script ????? > avez vous un moyen de fortcer le script a faire ce que je lui demande de > faire ? oui réponse rapide . essayes ça (testé ): [SCRIPT] --set date_slug to time of (current date) as string set theFldr to "ROBIN DES BOIS:pommes:pommes_01:" -- ATTENTION AU ":" final !!!!!! tell application "Finder" activate set l to every item of folder theFldr -- fichiers + dossiers set nbr to count l if nbr > 149 then set pFldr to container of folder theFldr set newFdldr to make new folder at pFldr with properties {name:"pommes" & the date_slug} move l to newFdldr end if end tell [/SCRIPT] -- Daniel

De : Dominique <listeasdomi@xxxxxxx.fr> Date : Fri, 1 Mar 2002 14:44:35 +0100 Objet : [AS] Re: nico, le retour nicolas descombes ecrivait / wrote: >J'ai également rectifié le tome 1, notamment pour ce qui concerne les >références aux autres tomes. Au départ, je n'avais pas prévu de faire 7 >tomes. Comme vous pourrez le constater sur le site, j'ai mis le détail des >différents tomes et plus à venir. C'est sympa :-) Mais le tome 1 a une erreur fatale chez moi ;-) (j'ai le Reader v4) -- (-8 domi Photo numérique / Digital Photography - xTalk Scripting

De : "Serge.Tegta" <Serge.Tegta@xxxxxxx.fr> Date : Fri, 01 Mar 2002 21:26:17 +0100 Objet : [AS] Re: [AS]numeroté des fichier en fonction de la date de creation Salut tout le monde J'ai besoin d'un petit script certainement classique Qui numeroterais mes fichiers dans l'ordre de leur creation. Je me bat avec drop rename depuis 1 heure, il me mélange tous alors je vais faire appel a apple script, certainement plus lent mais transparent. J'ai plus de mille fichiers, donc, le premier sera numeroté 0001 (c'est le premier crée), puis 0002, etc etc 1025,1026 etc.... si vous avez ca quelque part ??? Ca me rendrez un immence service a+ g

De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Sat, 2 Mar 2002 01:40:23 +0100 Objet : [AS] Re: [AS]numeroté des fichier en fonction de la date de creation À 21:26 +0100 le 01.03.2002, Serge.Tegta écrivait au sujet de "[AS] Re: [AS]numeroté des fichier en fonction de la dat" : > Salut tout le monde > > > J'ai besoin d'un petit script certainement classique Pas vraiment, j'utilise depuis longtemps File Buddy... ;-) > Qui numeroterais mes fichiers dans l'ordre de leur creation. > Je me bat avec drop rename depuis 1 heure, il me mélange tous alors je vais > faire appel a apple script, certainement plus lent mais transparent. > J'ai plus de mille fichiers, donc, le premier sera numeroté 0001 (c'est le > premier crée), puis 0002, etc etc 1025,1026 etc.... > si vous avez ca quelque part ??? > Ca me rendrez un immence service > a+ > g Ben File Buddy !!!! mais vraiment si tu y tiens : pour 974 fichiers sur G4 733mhz OS 9.2.2 avec FB : instantané avec ce script que je viens d'écrire : env. 5 mn l'Osax ·Akua Sweets 1.4.3 n'est pas indispensable pour le tri. J'ai ajouté ma routine vanilla au cas ou ;-)) Mais étonnement... avec l'osax le gain de temps ne parait pas monstrueux. Ma routine est pas trop mauvaise donc ;-)))) l'enregistremnt en tant qu'application est possible -> Droplet lui rajouter de la mémoire si nécessaire. même si j'ai assez testé. C'est du rapide... Donc assure toi que tu as une copie de tes fichiers. Même s'il me semble impossible qu'il y ait des dégâts, on ne sait jamais... [SCRIPT Renomme fichiers] on open theDrop verifOSAX() set theDrop to theDrop as list processFolder(item 1 of theDrop) end open on run verifOSAX() activate set theDossier to choose folder processFolder(theDossier) end run on processFolder(theDossier) activate display dialog "Renommer tout les éléments du dossier" & return & theDossier set t0 to current date tell application "Finder" set lcDate to creation date of items of theDossier set lcDate to my triAkua(lcDate) set ct to 0 repeat with cDate in lcDate set cDate to contents of cDate (items of theDossier whose creation date is cDate) repeat with f in result as list set ct to ct + 1 set n to my nLgFixe(ct, 4) repeat set ct2 to 0 try set name of f to n exit repeat on error erT number erN if erN = -48 then set ct2 to ct2 + 1 set n to n & "#" & ct2 else exit repeat end if end try end repeat end repeat end repeat end tell set t1 to current date set t to hms(t1 - t0) beep 2 activate display dialog "Temps écoulé : " & t end processFolder on nLgFixe(n, lgFixe) set {signe, ct} to {"", 0} if n < 0 then set {signe, n} to {"-", n * -1} set n to n as text repeat until ct = lgFixe if length of n > lgFixe then set n to n's text 1 thru -2 else set n to "0" & n end if set ct to length of n end repeat return "" & signe & n end nLgFixe on triAkua(l) try order list l with removal of duplicates --Akua on error beep triListe(l) end try end triAkua on triListe(liste) -- d'après un source C d'Irène Charon -- <http://www.inf.enst.fr/~charon/CFacile/exemples/exemple3.html> copy liste to liste tell liste repeat with i from 2 to count set cle to item i repeat with j from i - 1 to 1 by -1 if cle < item j then set item (j + 1) to item j else exit repeat end if set item j to cle end repeat end repeat set listeSANSdoublon to {} repeat with i in it set i to contents of i if i is not in listeSANSdoublon then set the end of listeSANSdoublon to i end repeat end tell return listeSANSdoublon end triListe on hms(laps) set h to formNum(laps div hours) set m to formNum((laps mod hours) div minutes) set s to formNum(laps mod minutes) ASD(":") set t to {h, m, s} as string ASD("") return t end hms on formNum(n) set {s, z} to {"", ""} if n < 0 then set {s, n} to {"-", -n} if n < 10 then set z to "0" return s & z & n end formNum on ASD(t) set AppleScript's text item delimiters to t end ASD on verifOSAX() try set n to "·Akua Sweets (1.4.3)" pause for 0 --(Akua Sweets Version) = 1.41001 --(Akua Version) = 1.43 return true on error beep activate set t to "Cet OSAX n'est pas disponible :" & return & return & "“" & n & ("”") set t to t & return & "Ce script sera simplement plus rapide avec cet Osax…" display dialog t with icon 1 end try end verifOSAX [/SCRIPT] A+ -- Daniel