[Applescript] copier un fichier sur un volume réseau |
Bienvenue invité ( Connexion | Inscription )
[Applescript] copier un fichier sur un volume réseau |
25 Nov 2014, 10:13
Message
#1
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 580 Inscrit : 5 Jun 2003 Lieu : Suisse Membre no 7 915 |
Bonjour,
je souhaite créer un script générant un dossier avec comme nom PDE-nomdelamachine et qu'il soit ensuite copié sur un volume réseau (monté en AFP). Ce qui ne fonctionne pas, c'est la copie du dossier créé sur le volume réseau. Cela vient certainement du chemin vers le volume qu'il ne trouve pas. J'ai essayé plusieurs syntaxes sans succès. Voici le code : Code tell application "Finder" mount volume "afp://user:[email protected]/doc" end tell set d to "PDE-" & computer name of (system info) as text set y to "Volumes/doc" tell application "Finder" if not (exists folder d of desktop) then make new folder at desktop with properties {name:d} end if duplicate d to y end tell J'ai remplacé les infos user/password/serveur, ce ne sont pas les vraies |
|
|
Guest_JacqR_* |
25 Nov 2014, 13:41
Message
#2
|
Guests |
Bonjour,
Pour obtenir le chemin exact d'un dossier : Première solution : en obtenant un chemin de type Alias Exécute ce script : Deuxième solution : le glissé/déposé (on obtient un chemin de type POSIX) Il suffit de sélectionné un dossier dans le Finder, de le glissé jusqu'à la fenêtre de l'éditeur de script et de le déposé entre les guillemets dans cette ligne Aussi la ligne pour dupliquer un dossier doit-être comme ceci Code duplicate folder d of desktop to y
Ce message a été modifié par JacqR - 25 Nov 2014, 13:44. |
|
|
26 Nov 2014, 14:40
Message
#3
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 580 Inscrit : 5 Jun 2003 Lieu : Suisse Membre no 7 915 |
Difficile de faire plus clair
Merci Encore une chose, le dossier de destination (qui est un volume réseau) fonctionne comme une boîte de dépôt (écriture uniquement). J'ai donc cette fenêtre du Finder qui apparait en lançant le script : Il y a certainement un moyen pour qu'elle n'apparaisse pas ou que Ok soit sélectionner, mais comment? |
|
|
Guest_JacqR_* |
26 Nov 2014, 17:17
Message
#4
|
Guests |
Bonjour,
Encore une chose, le dossier de destination (qui est un volume réseau) fonctionne comme une boîte de dépôt (écriture uniquement). J'ai donc cette fenêtre du Finder qui apparait en lançant le script : Il y a certainement un moyen pour qu'elle n'apparaisse pas ou que Ok soit sélectionner, mais comment? Sans modifier les permissions de la boîte de dépôt, la solution serait de dupliquer les éléments par la commande unix "cp". Voici un exemple : Code set d to "PDE-" & computer name of (system info) as text
set y to "/Volumes/xyz" as POSIX file as alias -- chemin de la boite de dépot tell application "Finder" if not (exists folder d of desktop) then make new folder at desktop with properties {name:d} set tFolder to (folder d of desktop) as alias end tell my duplicateUnix(tFolder, y, false) -- paramètres: 1- l'élément a dupliquer (alias), 2- le dossier de destination (alias), 3- true ou false (écrase un élément sil existe ou pas) on duplicateUnix(thisItem, dest, overwrite) set f to POSIX path of thisItem if f ends with "/" then set f to text 1 thru -2 of f -- si l'élément à copier est un dossier, il faut supprimer le dernier caractère (la barre oblique) set f1 to quoted form of f set f2 to quoted form of POSIX path of dest if not overwrite then do shell script "/bin/cp -aPRn " & f1 & " " & f2 else do shell script "/bin/cp -aPRf " & f1 & " " & f2 end if end duplicateUnix Ce message a été modifié par JacqR - 26 Nov 2014, 17:20. |
|
|
27 Nov 2014, 09:44
Message
#5
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 580 Inscrit : 5 Jun 2003 Lieu : Suisse Membre no 7 915 |
Merci ! Ca me servira pour un autre script.
Finalement j'ai modifié le volume réseau, il est en lecture/écriture. J'ai presque terminé, promis. Mon script actuel : Code tell application "Finder" mount volume "afp://login:[email protected]/test" end tell tell (current date) to get (it's year as integer) & "-" & (it's month as integer) & "-" & day & "_" set TheDateFormat to the result as text set t to time string of (current date) set d to "test-" & TheDateFormat & t & computer name of (system info) as text set y to alias "test:" tell application "Finder" if not (exists folder d of desktop) then make new folder at desktop with properties {name:d} end if duplicate folder d of desktop to y eject "test:" end tell Mais il ne fonctionne pas à cause de la date. Si j'enlève la date dans le nom du dossier, ça fonctionne. Si je la laisse, j'ai une erreur disant en gros qu'il ne trouve pas le dossier d à copier sur y. Lorsque j'exécute ce script, dans le nom du dossier l'heure est au format 09/20/38 au lieu de 09:20:38 et quand le script essai de copier le dossier sur le serveur, il cherche un nom de dossier avec l'heure au format 09:20:38. Pourtant si j'exécute tout seul set t to time string of (current date) dans Applescript, le résultat est bien 09:20:38. |
|
|
Guest_JacqR_* |
27 Nov 2014, 15:51
Message
#6
|
Guests |
Bonjour,
C'est parce que le caractère deux-points est le seul caractère qui est réservé par le Finder, donc on ne peut pas l'utiliser, sinon le Finder le converti en barre oblique. Utilise un autre caractère pour séparer le temps, comme le signe moins Code tell (current date)
set TheDateFormat to "" & (it's year as integer) & "-" & (it's month as integer) & "-" & day & "_" tell time string of it to set t to text 1 thru 2 & "-" & text 4 thru 5 & "-" & text 7 thru 8 end tell set d to "test-" & TheDateFormat & t & computer name of (system info) as text |
|
|
Nous sommes le : 27th April 2024 - 06:16 |