| |||||||
| Développement sur Mac XCode, Cocoa et Carbon, AppleScript ou Java ; le forum des développeurs Mac. |
| Publicité |
![]() |
| | Outils de la discussion | Modes d'affichage |
| | applesccript : copier des fichiers d'un disque externe à un autre | #1 |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Bonjour, ne connaissant pas grand chose en applescript je regarde habituellement comment d'autres scripts sont ecrits pour m'en inspirer. Aujourd'hui (et malgré une recherche google et sur ce site) je cale sur deux points avec ce script : Code: tell application "Finder"
try
set dossier_source to folder "100NCD80" of folder "DCIM" of disk "NIKON D80"
on error
set dossier_source to choose folder with prompt "Dossier Source "
end try
try
set dossier_final to folder "archive photos raw" of disk "MiniPartner"
on error
set dossier_final to choose folder with prompt "Dossier de Destination "
end try
make new folder at dossier_final with properties {name:"mon_texte"}
set dossier_final2 to folder "mon_texte" of dossier_final
set liste_des_fichiers to items of dossier_source
repeat with fichier in liste_des_fichiers as item
if class of fichier is document file then
set ext to the name extension of fichier
if ext = "nef" then
copy fichier to dossier_final2
end if
end if
end repeat
end tell pour les deux "mon_texte" je supprimerai les guillemets lorsque j'aurai pu corriger le bout de code suivant (que je mettrai donc en début de script pour définir la variable mon_texte) - en gros je cherche a nommer un nouveau dossier avec la date du jour sous la forme 2007-08-29 Code: set currentDate to current date
set an to (log year of currentDate) as text
set mois to (log month of currentDate as integer) as text
set jour to (log day of currentDate) as text
set mon_texte to an & "-" & mois & "-" & jour
tell application "Finder"
display dialog ("nous sommes le " & mon_texte) buttons {"ok!"} giving up after 10
end tell voici ce que l'historique des évènemnts m'affiche : Code: tell current application
current date
date "mercredi 29 août 2007 11:05:56"
(*2007*)
(*8*)
(*29*)
end tell
tell application "Finder"
display dialog "nous sommes le --" buttons {"ok!"} giving up after 10
{button returned:"ok!", gave up:false}
end tell | |
|
--------------------
Citation:
![]() Dernière modification par two ; 29/08/2007 à 10h12. | ||
| | | |
| Publicité |
| |
| | #2 | |
| Accro à MacG Date d'inscription: 10/08/04
Messages: 2019
Disco: ![]() ![]() ![]() ![]() ![]() ![]() | Bonjour Si c'est la date de ce jour pour créer le dossier alors: Code: set dossierDate to (do shell script "date +\"%Y-%m-%d\"") as string display dialog dossierDate @+ | |
| | | |
| | #3 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | merci ceslinstinct ca fonctionne à merveille Un problème sur deux de résolu | |
|
--------------------
Citation:
![]() | ||
| | | |
| | #4 | |
| Membre émérite Date d'inscription: 19/05/04 Localisation: St Etienne
Messages: 880
Disco: ![]() ![]() ![]() ![]() ![]() | Salut, Tu devrais utiliser des chemins de la forme "NIKON D80 CIM:100NCD:" plutôt que : folder "100NCD80" of folder "DCIM" of disk "NIKON D80".Code: tell application "Finder"
try
set dossier_source to "NIKON D80:DCIM:100NCD:"
on error
set dossier_source to choose folder with prompt "Dossier Source "
end try
try
set dossier_final to "MiniPartner:archives photos raw:"
on error
set dossier_final to choose folder with prompt "Dossier de Destination "
end try
if not (exists folder "MiniPartner:archives photos raw:mon_texte:") then
make new folder at dossier_final with properties {name:"mon_texte"}
end if
set dossier_final2 to "MiniPartner:archives photos raw:mon_texte:"
set liste_des_fichiers to list folder dossier_source
repeat with fichier in liste_des_fichiers
set theFile to contents of fichier
set pathFile to (dossier_source & theFile)
set infoFile to info for file pathFile
set ext to name extension of infoFile
if ext = "nef" then
duplicate pathFile to dossier_final2
end if
end repeat
end tell | |
|
--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense, notre crédulité fait toute leur science. Voltaire - extrait d'Œdipe | ||
| | | |
| | #5 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | en fonction de ton intervention et de celle de ceslinstinct j'ai corrigé mon script pour en faire ceci Code:
tell application "Finder"
set mon_texte to (do shell script "date +\"%Y-%m-%d\"") as string
try
set dossier_source to folder "NIKON D80:DCIM:100NCD80:"
on error
set dossier_source to choose folder with prompt "Dossier Source "
end try
try
set dossier_final to folder "MiniPartner:Archive photos raw:"
on error
set dossier_final to choose folder with prompt "Dossier de Destination "
end try
try
make new folder at dossier_final with properties {name:mon_texte}
set dossier_final2 to folder mon_texte of dossier_final
on error
set dossier_final2 to choose folder with prompt "Dossier de date "
end try
set liste_des_fichiers to items of dossier_source
repeat with fichier in liste_des_fichiers
set theFile to contents of fichier
set pathFile to (dossier_source & theFile)
set infoFile to info for file pathFile
set ext to name extension of infoFile
if ext = "nef" then
duplicate pathFile to dossier_final2
end if
end repeat
end tell Code: Impossible de transformer «class cfol» "100NCD80" of «class cfol» "DCIM" of «class cdis» "NIKON D80" of application "Finder" en type list, record or text. | |
|
--------------------
Citation:
![]() | ||
| | | |
| | #6 | |
| Membre émérite Date d'inscription: 19/05/04 Localisation: St Etienne
Messages: 880
Disco: ![]() ![]() ![]() ![]() ![]() | Commence par enlever les "folder" avant dossier_source et dossier_final car on a besoin du chemin complet et pas seulement du nom du dossier. Lorsque tu crées le dossier il faut construire le nouveau chemin en prenant le chemin de dossier_final et en rajoutant le nom du dossier (mon_texte) sans oublier les 2 points ":" pour indiquer que nous avons à faire à un dossier, on rajoutera "as alias" à la fin. Ce qui donne : Code: set dossier_final2 to (dossier_final & mon_texte & ":") as alias Et ça devrait fonctionner… | |
|
--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense, notre crédulité fait toute leur science. Voltaire - extrait d'Œdipe | ||
| | | |
| | #7 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | tu vas probablementy me trouver chiant ... ca ne marche pas voila ce qu'il me met en historique... Code: tell application "Finder"
do shell script "date +\"%Y-%m-%d\""
"2007-08-29"
make new folder at "MiniPartner:Archive photos raw:" with properties {name:"2007-08-29"}
choose folder with prompt "Dossier de date "
alias "MiniPartner:Archive photos raw:2007-08-29:"
info for file "NIKON D80:DCIM:100NCD80:N"
"Erreur dans Finder : Fichier NIKON D80:DCIM:100NCD80:N introuvable." je dois t'avouer que je ne sais absolument pas ce que je lui fais faire sur ces quatre lignes set theFile to contents of fichier set pathFile to (dossier_source & theFile) set infoFile to info for file pathFile set ext to name extension of infoFile | |
|
--------------------
Citation:
![]() | ||
| | | |
| | #8 | |||
| Membre émérite Date d'inscription: 19/05/04 Localisation: St Etienne
Messages: 880
Disco: ![]() ![]() ![]() ![]() ![]() | Citation:
Code: set liste_des_fichiers to items of dossier_source Citation:
La seconde construit le chemin du fichier La troisième récupère les informations du fichier (nom, taille, date de création, extension…) La quatrième récupère l'extension à partir des informations récupérées à la ligne 3 Pour voir le résultat de chaque ligne il suffit de rajouter l'instruction "log" comme je te l'ai rajouté et tu verras la valeur retournée dans l'historique encadrée par (* ta_valeur *). | |||
|
--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense, notre crédulité fait toute leur science. Voltaire - extrait d'Œdipe | ||||
| | | |||
| | #9 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | OK j'ai trouvé mon erreur : la ligne juste avant le repeat : j'avais mis " set liste_des_fichiers to items of dossier_source " alors qu'il faut metre "set liste_des_fichiers to list folder dossier_source " Un grand merci à toi ![]() edit j'ai écrit ce message avant de me rendre compte qu'entre temps tu me donnais la même réponse ![]() J'ai d'ailleurs mis ce script à disposition dans ce fil | |
|
--------------------
Citation:
![]() Dernière modification par two ; 30/08/2007 à 10h26. | ||
| | | |
| | #10 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | hello, un petit souci avec ce script : il fonctionne a merveille quand le dossier ou je récupère habituellement mes photos est accessible. grace à cette ligne : Code: set dossier_source to "NIKON D80:DCIM:100NCD:" Code: set dossier_source to choose folder with prompt "Choisissez l'emplacement des photos à importer." j'ai don la sensation que la commande set to choose folder with prompt n'est pas suffisente pour faire correctement référence à un dossier... Une idée? | |
|
--------------------
Citation:
![]() | ||
| | | |
| | #11 | ||
| Anonyme
Messages: n/a
| Citation:
Essaye : Code: set dossier_source to item 1 of choose folder with prompt "Choisissez l'emplacement des photos à importer." | ||
| Dernière modification par DocEvil ; 03/09/2007 à 13h00. | |||
| |||
| | #12 | |
| Membre émérite Date d'inscription: 19/05/04 Localisation: St Etienne
Messages: 880
Disco: ![]() ![]() ![]() ![]() ![]() | J'ai modifié le script et il fonctionne maintenant si le dossier source n'existe pas, il est probable que tu devras modifier dossier_final et dossier_final2 dans le même style mais je te laisse faire… Code: property dossier_source : missing value
tell application "Finder"
set mon_texte to (do shell script "date +\"%Y-%m-%d\"") as string
if exists folder "NIKON D80:DCIM:100NCD80:" then
set dossier_source to "NIKON D80:DCIM:100NCD80:"
else
set dossier_source to choose folder with prompt "Dossier Source "
end if
try
set dossier_final to "MiniPartner:Archive photos raw:"
on error
set dossier_final to choose folder with prompt "Dossier de Destination "
end try
try
make new folder at dossier_final with properties {name:mon_texte}
set dossier_final2 to (dossier_final & mon_texte & ":") as alias
on error
set dossier_final2 to choose folder with prompt "Dossier de date "
end try
set liste_des_fichiers to list folder dossier_source
repeat with fichier in liste_des_fichiers
set theFile to contents of fichier
set pathFile to (dossier_source & theFile) as string
set infoFile to info for file pathFile
set ext to name extension of infoFile
if ext = "nef" then
duplicate (pathFile as alias) to dossier_final2
end if
end repeat
end tell | |
|
--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense, notre crédulité fait toute leur science. Voltaire - extrait d'Œdipe | ||
| | | |
| | #13 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | merci, c'est parfait... Oui j'avais aussi un problème avec le dossier final si celui par défaut était absent mais beaucoup moins grave : il créait bien un sous dosier daté dans le dossier que je choisissais et me demandait juste après de le choisir à nouveau. Ce qui ne me faisait qu'une sélection en plus. Je vais le modifier pour cela aussi... | |
|
--------------------
Citation:
![]() | ||
| | | |
| | #14 | |
| Membre émérite Date d'inscription: 19/05/04 Localisation: St Etienne
Messages: 880
Disco: ![]() ![]() ![]() ![]() ![]() | Je vais quand même te donner le code car il y a une ligne qui peut peut-être te poser des problèmes dans se dossier_final2, je te laisse les log si tu veux voir le résultat dans l'historique… Code: property dossier_source : missing value
property dossier_final : missing value
tell application "Finder"
set mon_texte to (do shell script "date +\"%Y-%m-%d\"") as string
if exists folder "NIKON D80:DCIM:100NCD80:" then
set dossier_source to "NIKON D80:DCIM:100NCD80:"
else
set dossier_source to choose folder with prompt "Dossier Source "
end if
log "dossier_source : " & dossier_source
if exists folder "MiniPartner:Archive photos raw:" then
set dossier_final to "MiniPartner:Archive photos raw:"
else
set dossier_final to choose folder with prompt "Dossier de Destination "
end if
log "dossier_final : " & dossier_final
try
make new folder at dossier_final with properties {name:mon_texte}
set dossier_final2 to ((dossier_final & mon_texte & ":") as string) as alias
on error
set dossier_final2 to choose folder with prompt "Dossier de date "
end try
log "dossier_final2 : " & dossier_final2
set liste_des_fichiers to list folder dossier_source
repeat with fichier in liste_des_fichiers
set theFile to contents of fichier
set pathFile to (dossier_source & theFile) as string
set infoFile to info for file pathFile
set ext to name extension of infoFile
if ext = "txt" then
duplicate (pathFile as alias) to dossier_final2
end if
end repeat
end tell | |
|
--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense, notre crédulité fait toute leur science. Voltaire - extrait d'Œdipe | ||
| | | |
| | #15 | |
| Membre émérite Date d'inscription: 06/11/05 Localisation: Namur
Messages: 248
Disco: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | je suis arrivé à un équivalant en remplacant le as alias précedent non pas par as string)as alias mais juste par as string et en mettant un as alias à chaque récurence suivante de dossier_final2... ![]() ta version est un peu plus propre, je vais donc la reprendre... merci | |
|
--------------------
Citation:
![]() | ||
| | | |
![]() |
| |
| Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s)) | |
| Outils de la discussion | |
| Modes d'affichage | |
Discussions similaires | ||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| partager des fichiers a partir d'un disque dur externe sur un reseau local | zelita | Internet et réseau | 8 | 30/05/2007 18h12 |
| Lecture des fichiers Vidéos et Audio à partir d'un Disque Dur Externe | TiTNiCo | Périphériques et Accessoires | 1 | 15/03/2007 23h42 |
| peut-on copier l'OS d'un mac à un autre par FW ? | garuda | Mac OS X | 3 | 24/12/2004 09h51 |
| Copier l'utilisateur d'un mac sur un autre ? | vincentsurlenet | iBook et PowerBook | 1 | 11/02/2004 13h01 |
| Copier des fichiers d'un Mac à l'autre via internet | pampelune | Internet et réseau | 30 | 08/12/2003 20h31 |