IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> [Applescript] copier un fichier sur un volume réseau
Options
Hollow
posté 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 wink.gif
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 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 :
Code
choose folder

Copie le résultat de l'éditeur, colle-le après ce texte
Code
set y to
dans votre 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
Code
set y to ("") as POSIX file as alias

Le chemin sera converti en Alias, comme cela il fonctionnera dans le bloc "Finder" de votre script.



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.
Go to the top of the page
 
+Quote Post
Hollow
posté 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 smile.gif
Merci smile.gif

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?
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 26 Nov 2014, 17:17
Message #4





Guests






Bonjour,

Citation (Hollow @ 26 Nov 2014, 08:40) *
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.
Go to the top of the page
 
+Quote Post
Hollow
posté 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.
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th April 2024 - 06:29