Transfert de photos selon une liste avec applescript

  • Créateur du sujet Créateur du sujet T-45
  • Date de début Date de début
@remy
duplicate CheminImage to folder dossiercible

C'est exactement la commande du script ;)

Je suis persuadé que c'est la non reconnaissance du nom du fichier entre la liste et le fichier dans le dossier source !
 
@remy


C'est exactement la commande du script ;)

Je suis persuadé que c'est la non reconnaissance du nom du fichier entre la liste et le fichier dans le dossier source !

duplicate alias CheminImage to folder dossiercible

Dans le script il manque le mot alias et le mot folder
Si j'en crois Google, alias est nécessaire pour spécifier qu'il s'agit d'un fichier (et pas d'une chaîne de caractères) et folder est nécessaire pour spécifier ce qu'est la destination.
 
Sinon, utiliser le do shell script de mon message #58, mais dans ce cas il faut modifier CheminImage et dossiercible pour remplacer les : par des / dans les chemins d'accès
 
Non, non, cela signifie qui faut que le cheminimage doit être au format alias (pas string ou autre) et folder signifie que ce soit un chemin vers un dossier...
Mais que tu les ajoutes ou pas ne devrait rien changer.
 
@remy
J'ai fais plein d'essai chez moi avec CP, avec le script shell de bytes-order, en remplaçant duplicate par move (pour déplacer) et même avec open pour ouvrir le fichier.
Tout fonctionne si le chemin et le nom du fichier est bon, par contre le moindre espace ou autre caractères qui s'insère donne bien ce message d'erreur.
 
@T-45
je viens de modifier le script pour faire un test.
Ce script ce sert de ton fichier liste avec des virgules.
A la place de dupliquer le fichiers il met une boite de dialogue t'indiquant si il a trouvé ou pas le fichier de la liste dans le dossier source.
Peux-tu faire un essai et voir les fichiers qu'il trouve et ceux qu'il ne trouve pas.
Lorsqu'il ne trouve pas, regarde bien le chemin! éventuellement fait une copie d'écran de la boite de dialogue.

Bloc de code:
tell application "Finder"
   
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à copier"
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
    my inspecter(cheminsource, chemincible, laliste)
end tell

on inspecter(source, cible, liste1)
    set dossiersource to source as string
    set dossiercible to cible as string
    open for access liste1
    read liste1
    set tout_le_fichier to the result
    close access liste1
    set AppleScript's text item delimiters to (ASCII character 44)
    set toutes_les_lignes to (every text item of tout_le_fichier) as list
    set AppleScript's text item delimiters to ""
    set tout_le_fichier to ""
   
    repeat with une_ligne in toutes_les_lignes
        set CheminImage to dossiersource & une_ligne & ".cr2"
        tell application "Finder"
           
            if exists CheminImage then
                display dialog "j'ai trouvé le fichier " & CheminImage
            else
                display dialog "PAS trouvé le fichier " & CheminImage
            end if
           
        end tell
    end repeat
end inspecter

tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Bonjour à tous ! :coucou:
Désolé pour le retard !
Ca y est ça fonctionne !! J'ai transféré tous les dossiers à la base de Macintosh HD. J'imagine que le problème était la différence de source ?
 
  • J’aime
Réactions: r e m y
Ok content pour toi
Si problème ou adaptation n(hésite pas à demander

Bonne journée
 
@byte_order

Je tiens à te dire que j'ai enfin réussi à intégrer ta commande dans un applescript.
Avec ta version qui fonctionne sur un fichier liste avec 1 nom de fichier par ligne.
Une version à laquelle j'ai ajouté (tr ',' '\n') pour remplacer les virgules par un retour chariot avant xargs et tout fonctionne.

Merci de ta participation
 
Salut,
J'ai essayé d'utiliser le script mais j'ai la même erreur que T-45, impossible. J'ai essayé toutes les solutions indiquées mais rien y fait. Voici ce que me dit la boite de dialogue (bizarre comme nom de fichier) :
PAS trouvé le fichier SSD 500:Users:florent.chardonnal:Movies:CLIP_SD2:{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0

\f0\fs24 \cf0 C0211\
C0213\
C0214\
C0215\
C0216\
C0219\
C0221\
C0222\
C0224\
C0226\
C0227\
C0228\
C0229\
C0230\
C0242\
C0243\
C0246\
C0250\
C0251\
C0254\
C0261\
C0262\
C0263\
C0264\
C0266\
C0269\
C0272\
C0281\
C0282\
C0283\
C0284\
C0285\
C0286\
C0289\
C0290\
C0291\
 
Salut,
J'ai essayé d'utiliser le script mais j'ai la même erreur que T-45, impossible. J'ai essayé toutes les solutions indiquées mais rien y fait. Voici ce que me dit la boite de dialogue (bizarre comme nom de fichier) :
PAS trouvé le fichier SSD 500:Users:florent.chardonnal:Movies:CLIP_SD2:{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0

\f0\fs24 \cf0 C0211\
C0213\
C0214\
C0215\
C0216\
C0219\
C0221\
C0222\
C0224\
C0226\
C0227\
C0228\
C0229\
C0230\
C0242\
C0243\
C0246\
C0250\
C0251\
C0254\
C0261\
C0262\
C0263\
C0264\
C0266\
C0269\
C0272\
C0281\
C0282\
C0283\
C0284\
C0285\
C0286\
C0289\
C0290\
C0291\


Ok, problème résolu. J'avais un soucis dans l'architecture de la liste
 
Bonjour Florentch,

Tu as bien vu pour copier --> coller on utilise duplicate.
Pour déplacer on utilise move à la place de duplicate

dis-moi si cela fonctionne, sinon on regardera de plus prés !
 
Alors 2 possibilités
1- la liste doit avoir l 'extension du fichier (IMG_1906.CR2)
2- Si tous les fichiers sont en .CR2, ajouter l'extension dans le script: ce qui donne
Bloc de code:
tell application "Finder"
  
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à copier"
  
    set chemincible to choose folder with prompt "Sélectionnez le dossier cible"
  
    set laliste to choose file with prompt "Sélectionnez le fichier liste"
  
    my inspecter(cheminsource, chemincible, laliste)
  
end tell


on inspecter(source, cible, liste1)
  
  
  
    set dossiersource to source as string
  
    set dossiercible to cible as string
  
  
  
  
  
    open for access liste1
  
    read liste1
  
    set tout_le_fichier to the result
  
    close access liste1
  
    set AppleScript's text item delimiters to (ASCII character 13)
  
    set toutes_les_lignes to (every text item of tout_le_fichier) as list
  
    set AppleScript's text item delimiters to ""
  
    set tout_le_fichier to ""
  
  
  
  
  
    repeat with une_ligne in toutes_les_lignes
    set CheminImage to dossiersource & une_ligne & ".cr2"
      
        set CheminImage to dossiersource & une_ligne
      
        tell application "Finder"
          
          
          
            duplicate CheminImage to dossiercible
          
          
          
        end tell
      
    end repeat
  
end inspecter

tell application "Finder"
  
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
  
end tell
Bonjour Zeltron54, j'ai essayé ce script avec des dossiers se trouvant sur mon macbookair et il fonctionne parfaitement! Par contre, lorsque j'essaye de le lancer sur 1 dossier source (très volumineux) & cible se trouvant sur mon réseau de travail (qui tourne sous windows) l'application tourne en rond et ne fait pas le travail. Qu'est ce qui pourrait bloquer?
Merci d'avance de ton aide
 
Bonjour,

Souvent, lorsque l'on travaille sur le réseau, la vitesse de lecture et de transfert est trop longue , le script passe au fichier suivant avant que le premier ne soit traiter.

Pour résoudre ce problème il faut insérer une temporisation dans le script, ce que allonge beaucoup trop le temps de traitement...
Ou bien simplement déplacer les dossiers et fichiers sur le disque dur ce qui est long mais moins que la tempo...
 
Bonjour,

Souvent, lorsque l'on travaille sur le réseau, la vitesse de lecture et de transfert est trop longue , le script passe au fichier suivant avant que le premier ne soit traiter.

Pour résoudre ce problème il faut insérer une temporisation dans le script, ce que allonge beaucoup trop le temps de traitement...
Ou bien simplement déplacer les dossiers et fichiers sur le disque dur ce qui est long mais moins que la tempo...
merci pour la réponse rapide, je vais donc essayer en déplaçant les dossiers sur un disque dur externe.