IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Alias en integer avec condition if


Sujet :

AppleScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Alias en integer avec condition if
    Bonjour à tous,

    J'ai fait un script qui permet de faire un genre de backup selon le dossier source et le disque de destination que sélectionne l'utilisateur :

    display dialog "Backup Application, Before continue make sure you have plugged an external support to do the backup" default button "OK"
    display dialog "To backup one, or some files press 1
    To backup an entire folder press 2
    To Backup multiples folders press 3 :" default answer ""
    set typeOfBackup to the text returned of the result

    tell application "Finder"
    --Sauvegarde de fichiers
    if typeOfBackup = "1" then
    set source to choose file default location (path to documents folder) with multiple selections allowed
    get name of every disk whose ejectable is true
    try
    set externalLocation to ((choose from list result with prompt "Select your external Disk from the list : ") as text)
    end try
    duplicate source to externalLocation
    else if typeOfBackup = "2" then
    set sourceFolder to choose folder with prompt "Select a folder" default location (path to documents folder)
    get name of every disk whose ejectable is true
    try
    set externalLocation to ((choose from list result with prompt "Select your external Disk from the list : ") as text)
    end try
    duplicate sourceFolder to externalLocation
    else if typeOfBackup = "3" then
    set sourcesFolder to choose folder with prompt "Select folders" default location (path to documents folder) with multiple selections allowed
    get name of every disk whose ejectable is true
    try
    set externalLocation to ((choose from list result with prompt "Select your external Disk from the list : ") as text)
    end try
    duplicate sourcesFolder to externalLocation
    end if
    end tell

    Le problème est quand je veux rajouter une condition. Par exemple , après cette ligne :

    try
    set externalLocation to ((choose from list result with prompt "Select your external Disk from the list : ") as text)
    end try

    si je rajoute un if pour dire que le fichier à copier existe déjà et que je compile :

    if typeOfBackup = "1" then
    set source to choose file default location (path to documents folder) with multiple selections allowed
    get name of every disk whose ejectable is true
    try
    set externalLocation to ((choose from list result with prompt "Select your external Disk from the list : ") as text)
    end try
    if (exists file source of externalLocation) then
    display dialog "ATTENTION ! Fichier dèja présent sur le support externe, le remplacer ?"
    set resp to the text returned of the result

    if resp = "oui" then
    duplicate source to externalLocation
    end if
    end if

    J'obtiens l'erreur suivante : Il est impossible de rendre alias "MacintoshHD:Users:username:Documents:test.txt" en type integer.

    Quelqu'un aurait-il la solution à ce problème ?

    Merci :-)

    Nom : erreur as.jpg
Affichages : 106
Taille : 20,2 Ko

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    Pour tes posts suivants je te suggère de mettre les parties de ton code entre des balises "code". Cela permet de garder le format de l'éditeur AppleScript lors d'un copié / coller. C'est plus lisible pour les personnes qui te relisent. (lors de ton post, ces balises s'insèrent lorsque tu utilises le bouton avec un #)


    Pas grave : j'ai copié ton code dans l'éditeur.


    Le problème vient, je crois, du fait que tu ne peux pas exécuter un "exists" sur la variable Source.
    D'une part, celle-ci peut être une liste car tu autorises les sélections multiples.
    D'autre part, "Source of externalLocation" ne peut fonctionner car, même si Source un seul fichier, c'est un alias vers le fichier (donc un alias vers le fichier avec son chemin). donc source of externallocation donnerai quelque chose comme disqueHD:Users:communication:documents dans le dossier externallocation.
    Impossible !
    En fait, il faut faire une boucle repeat sur chaque fichier et pour chacun extraire le nom et regarder si ce même nom existe dans externallocation.


    Dans ce cas, tu peux te heurter au problème des arborescences complexes: si le dossier existe sur externallocation, on teste les fichiers dedans, si il n'existe pas on le crée et on copie...et ce pour un nombre de niveau de sous dossiers aléatoire !

    Autre commentaire : tu peux réduire le nombre de lignes de ton code actuel en mettant le bloc <get name ...try set externallocation...en try> une seule fois au début du programme. Il n'en sera que plus lisible et simple à maintenir.

    Enfin, une dernière remarque concernant le choix initial demandé à l'utilisateur. Il serai plus élégant de faire un dialogue avec 3 boutons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    display dialog "votre choix" buttons{"1 fichier","1 dossier","Plusieurs dossiers"}
    Cordialement

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2004, 14h51
  2. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  3. ALTER VIEW avec condition
    Par yan77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/04/2004, 17h22
  4. Index avec conditions
    Par marhnix dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/03/2004, 10h48
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo