0 votes

Coller des fichiers vers plusieurs destinations

Je me retrouve assez souvent dans cette situation mais je n'ai pas trouvé de solution. J'ai un groupe de fichiers CSS dans le presse-papiers que je dois coller + remplacer dans plusieurs dossiers de destination différents. La structure de mes dossiers est similaire à

.
 folderA_11
|    CSS
|         file1.css
|         file2.css
|         file3.css
 folderB_11
|    CSS
|         file1.css
|         file2.css
|         file3.css
 folderC_11
|    CSS
|         file1.css
|         file2.css
|         file3.css
 folderD_22
|    CSS
|         file1.css
|         file2.css
|         file3.css
 folderE_33
|    CSS
|         file1.css
|         file2.css
|         file3.css
 folderF_44
     CSS
          file1.css
          file2.css
          file3.css
etc...

Il y a un modèle : Je veux coller à tous les dossiers CSS dont le conteneur se termine par _11 mais pas les autres.

Le contenu des dossiers de destination n'a pas d'importance, je dois simplement les remplacer par les nouveaux fichiers. Existe-t-il un moyen simple de coller ces fichiers dans plusieurs destinations à la fois ? Il pourrait également s'agir d'un flux Automator ou d'une commande Terminal.

2voto

Mateus Ribeiro Points 877

1 - Ouvrez Automator et créez un nouveau service :

enter image description here

2 - Configurer le service pour qu'il reçoive les fichiers et dossiers dans le Finder :

enter image description here

3 - Faites glisser une action "Demander des éléments du Finder" :

enter image description here

4 - Faites glisser une action "Exécuter AppleScript" :

enter image description here

5 - Collez ce code :

on run {input}
    set numItems to count input
    set theFile to item (numItems) of input as text
    set numItems to numItems - 1
    repeat while numItems is not 0
        tell application "Finder"
            duplicate file theFile to folder (item (numItems) of input as text) with replacing
            set numItems to numItems - 1
            delay 0.1
        end tell
    end repeat
    display dialog "File copied to all folders" buttons {"Thanks"} giving up after 5
end run

6 - Enregistrez votre flux de travail et donnez-lui le nom que vous souhaitez :

enter image description here

7 - UTILISATION : Sélectionnez autant de dossiers que vous le souhaitez, cliquez avec le bouton droit de la souris, services, recherchez votre flux de travail :

enter image description here

Sélectionnez le fichier que vous souhaitez copier (attention, la fenêtre peut être cachée derrière la fenêtre principale) :

enter image description here

Cliquez sur "Choisir" et attendez la copie.

enter image description here

PS : le fichier remplacera les fichiers existants portant le même nom.

2voto

OnePablo Points 1

Comme demandé, voici une solution réalisable dont nous avons discuté dans le fil des commentaires. Actuellement, la situation est la suivante : vous avez plusieurs fichiers dans le presse-papiers qui doivent être collés dans plusieurs dossiers de destination. Ces dossiers de destination sont tous appelés "CSS" et résident à l'intérieur d'un ensemble de dossiers parents (noms se terminant par "_11" ) que vous pouvez sélectionner en masse.

Après cela, vous pouvez exécuter la commande suivante Automate soit à partir du menu contextuel en cliquant avec le bouton droit de la souris et en le sélectionnant dans la rubrique Services (ou l'équivalent dans Mojave) ; ou en lui attribuant un raccourci clavier dans Préférences du système et de déclencher le service en appuyant sur une touche de raccourci.

Les Automate Le service en question se présente comme suit :

Automator service in macOS

Le code AppleScript utilisé dans le Run AppleScript est ci-dessous. L'AppleScript lit la liste des fichiers contenus dans le presse-papiers ; il isole le fichier "CSS" dans chacun des dossiers parents sélectionnés qui ont été transmis au service (l'option "CSS" est créé s'il n'existe pas déjà), puis duplique les fichiers du presse-papiers dans le dossier "CSS" les répertoires.

Si le presse-papiers ne contient aucun fichier, vous entendrez un bip et aucune autre action ne sera entreprise.

use framework "AppKit"

property this : a reference to current application
property NSPasteboard : a reference to NSPasteboard of this
property NSURL : a reference to NSURL of this

on run {input, parameters}
    set pb to NSPasteboard's generalPasteboard()
    set fs to (pb's readObjectsForClasses:[NSURL] options:[]) as list

    using terms from scripting additions
        -- No files on clipboard, nothing to do
        if fs = {} then return beep
    end using terms from

    tell application "Finder" to repeat with f in the input
        set css to (a reference to the folder named "CSS" in folder f)
        if not (exists css) then make new folder at f with properties ¬
            {name:"CSS"}

        duplicate fs to css with replacing
    end repeat
end run

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X