Ouvrir des fichiers avec Automator

Bonjour,
Un script à tester chez toi.

Ce script s'utilise sans se servir d'automator.

Tu ouvres l'éditeur de script dans Applications-->Utilitaires. choisir nouveau document.
Dans la fenêtre faire un copier coller du script ci-dessous.
Cliquer sur la flèche Exécuter en haut à gauche, naviguer jusqu'au dossier contenant les webloc sur le NAS, cliquer sur choisir.
Les fichiers webloc devraient s'ouvrir. (en fonction du nombre de fichiers ça peut être un peu long)

Dis moi si ça fonctionne chez toi.
Chez moi par le réseau SMB cela fonctionne.

Bloc de code:
tell application "Finder"
    set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers webloc à ouvrir"
    
    my inspecter(cheminsource)
end tell

on inspecter(ledossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of ledossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            tell application "Finder"
                set lefichier to chaque_fichier
                set extens to chaque_fichier
                set lextension to name extension of extens
                
                if lextension = "Webloc" then
                    open lefichier
                end if
                
            end tell
        end repeat
        -- traitement des dossiers :
        set les_dossiers to folders of ledossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
 
Bonsoir,
Dans le message la partie "home:test:" représente t'elle bien le chemin d'accès à ton dossier du NAS ?

Pour faire un controle:
Ouvre une fenêtre vierge dans l' éditeur de script, puis fait un glisser déposer du dossier dans cette fenêtre, clique sur copier, un chemin s'écrit dans la fenêtre, peux tu me mettre le résultat de cette manip (un copier coller du chemin obtenu) .
 
Dernière édition:
Une autre question !
Comment accèdes-tu au dossiers qui sont sur le NAS ?
Avec le finder du mac, ou avec une autre application ?
 
Alors le résultat : /Volumes/home/test

Ce qui est étrange c'est que ce sont des slash normalement, et que dans le script il met deux points :

Je me connecte grâce au Finder le NAS est automatiquement reconnu et c'est du SMB.
 
Que ce soit des slash puis deux points est normal c'est les chemins UNIX puis MAC...
Par contre je ne comprend pas pourquoi ça fonctionne chez moi et pas chez toi ...

Je pense avoir compris pourquoi les premiers scripts en automator posaient problème, je pense à une histoire de délais, le script s'exécutait alors que le filtrage des fichiers n'était pas encore fait. Je fais des tests et je te remets ça...
 
Alors voir la capture écran.
Action 1 - glisser déposer le dossier
Action 3 - dans option : cocher "afficher cette action si le processus est exécuté"
Action 4 - copier coller le script applescript ci-dessous.

Lors de l'exécution une fenêtre va s'ouvrir, il faut cliquer sur continuer, là l'action s'exécute avant de passer à l'action 4.
D'après mes essais , le script à l'air de garder en mémoire et si on décoche l'option il attend quand même.
On peut constater que le script action 3 s'exécute avec un petit camembert qui se met et se rempli à gauche de l' étiquette Résultats.
Il a fallut que je lance 2 ou 3 fois le script avant que cela fonctionne, et depuis plus de problème chez moi ... :)

Capture d’écran 2021-05-25 à 22.21.55.png

Bloc de code:
on run {input, parameters}
    set chemin to input
  
    tell application "Finder"
      
        repeat with lefichier in chemin
            set extens to lefichier
            set lextension to name extension of extens
            if lextension = "Webloc" then
                open lefichier
            end if
          
        end repeat
    end tell
  
    return input
end run
 
Dernière édition:
Cela à l'air bon, relance le script plusieurs fois et surveille si tu vois le petit camembert à gauche de l'étiquette "Résultats" de l'action 3.

Tu peux également vérifier, en supprimant l'action 4, tu lances le script et tu vérifies si tu obtiens quelque chose dans le résultats , soit patient , il faut que ça scanne tous les fichiers du dossier.
 
D'accord, oui le petit camembert est bien remplis. Dans ce dossier c'est un dossier test avec 4-5 webloc.

EDIT : Je crois que j'ai trouvé, c'est au niveau du filtrage regarde les résultats.


Screenshot 25-05-2021- à 23h54 44s - Automator.app - Sans titre.app (Application).png

EDIT N2 :
Voici le script que j'ai fait, tout s'est bien lancé, que ce soit les photos ou les liens. Donc le problème ne viens pas de l'alias ou autre, mais du filtrage !
Screenshot 26-05-2021- à 00h02 28s - Automator.app - Sans titre.app (Application).png


En cherchant sur Google je suis tombé sur un topic de ce forum :

ou encore :

Si je résume bien, il faudrais un petit AppleScript pour le filtrage vu que celui d'automator ne fonctionne pas. Sur le dernier lien il explique comment faire mais je t'avoue que je me fais vite des noeuds au cerveau.

Sinon peut-être que le filtrage ne se situe pas au bon endroit ou qu'il lui manque une action.
 
Dernière édition:
Bonjour,
En regardant tes copies écran, un truc m'interpelle
Tu n'as pas fait le test en ne laissant que les 3 premières actions, la dernière étant le filtrage, et voir après l'avoir lancer(éventuellement 2 ou 3 foi et en étant patient) le résultat dans filtrage...

Il me semble que là on trouve le résultat du filtrage correct, ce qui semblerait vouloir dire que le script des actions suivantes s'exécutent alors que le filtrage n'est pas encore effectué et donc vide...
 
Bonjour,

Je viens de faire une multitudes de tests ...

Ma conclusion: C'est bien une histoire de rapidité, en effet, le script n'attend pas le fin d'une action avant de poursuivre.
Le temps d'accès par le réseau pour obtenir le dossier, puis obtenir le contenu des sous dossiers, est déjà très long (surtout si le nombres d'éléments est important), puis le temps pour filtrer les fichiers, ... Le script est déjà arrivé à la fin que la recherche est encore en cours donc il n'a pas de résultat à afficher.

Même sans filtrer, le passage à l'action suivante se fait avant d'avoir eut le résultat de la recherche si le nombre d'éléments est important.

Tout fonctionne si il y a peu de dossier et de fichier, et surtout si le réseau est rapide.
 
Alors j'ai remis l'AppleScript, je le fais avec mon dossier test qui contiens 5 sous dossier avec chacun un webloc pour le test, et une image pour voir s'il le filtre.

J'ai beau le refaire plusieurs dizaines de fois mais ça m'affiche le même résultat.Screenshot 26-05-2021- à 19h07 27s - Automator.app - Sans titre.app (Application).pngScreenshot 26-05-2021- à 19h07 33s - Automator.app - Sans titre.app (Application).png
 
Le problème est bien que l'action filtrer ne fait pas le job, mais c'est parce qu'elle ne reçoit pas le résultat de l'action précédente en entrée.

D'ailleurs l'action filtrer n'est même pas nécessaire car dans l'applescipt qui suit, le filtrage se fait dans le script, mais idem le script ne reçoit pas le résultat de l'action précédente en entrée, il s"exécute avant que l'action précédente ne soit terminée... Car obtenir les élements du finder et obtenir le contenu des dossiers est trop long ...

Ces mêmes actions, faites directement sur le MAC sans passer par le réseau SMB fonctionnent sans problème.
 
Cependant si je demande à ouvrir tous les éléments sans rajouter de filtre et le Script ça marche sans problème mais du coup ça m'ouvre pleins de fenêtre et les images également.
 
Oui parce que , l'ouverture des fichiers, se fait au fur et à mesure qu'il arrivent, alors que les scripts récupèrent le résultat dans son ensemble dans une variable, puis font je job en filtrant les éléments de cette variable...

Bref ! je ne vois pas de solution à ce problème...
 
Bonjour,
J'ai refait un applescript qui te demande de sélectionner le dossier, puis en passant par le terminal récupère dans une variable la liste des fichiers webloc et seulement quand il a fini, ouvre ces fichiers...
En fonction du nombre de fichiers et de la vitesse du réseau .... c'est lonnnnnng. La petite roue en bas de la fenêtre devant "en cours d'exécution" en est la preuve. Mais les webloc finissent par s'ouvrir !
Chez moi cela fonctionne, dis moi si c'est bon chez toi.

Bloc de code:
set chemin to choose folder with prompt "choisir le dossier"
set aa to POSIX path of chemin
set a to quoted form of aa
set lalist to do shell script "find " & a & " -name *.webloc"

set nb to count paragraph of lalist

repeat with i from 1 to nb
    set bb to paragraph i of lalist
    set lefichier to POSIX file bb
    
    tell application "Finder"
        open lefichier
    end tell
end repeat
 
Alors je viens de tester et.. ÇA FONCTIONNE ! Merci beaucoup ! Ça va me changer la vie. :-D

Cela me sert lorsque je fais une clean Install de macOS pour ouvrir tous les webloc concernant les apps de l'App Store que je veux. Il me les ouvre toutes et App Store se lance, j'ai juste à cliquer sur télécharger, retour, une autre fenêtre 'une autre app est ouverte, je télécharge. Très simple ^^

Je me suis crée un protocole de clean Install, et, automatiser une telle tâche c'est juste le top ! Je compte bien en faire une vidéo et je me ferais un plaisir de partager la solution et te citer.

Merci à toi :-D
 
Dernière édition:
Content pour toi !

Si tu veux éviter d'avoir à choisir le dossier et mettre l'adresse en dur dans le script, fais moi signe...
;)
 
Dernière édition: