0 votos

Pegar archivos a múltiples destinos

Me veo en esta situación bastante a menudo, pero no he encontrado una solución. Tengo un grupo de archivos CSS en el portapapeles, que necesito para pegar + reemplazar en diferentes carpetas de destino. Mi carpeta de estructura es similar a la

.
├── 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...

Hay un patrón: quiero pegar a todos los CSS carpetas cuyos extremos del contenedor en _11 pero no la de los demás.

El contenido de las carpetas de destino no importa, solo me falta reemplazarlos con los nuevos archivos. Hay una manera sencilla para pegar estos archivos en varios destinos a la vez? También podría ser un Automator el flujo o la Terminal de comandos.

2voto

HUSTEN Puntos 118

1 - Abrir Automator y crear un nuevo Servicio:

enter image description here


2 - Configurar el Servicio para recibir los Archivos y Carpetas en el Finder:

enter image description here


3 - Arrastrar una "Pedir Buscador de Artículos" de la acción:

enter image description here


4 Arrastre un "Ejecutar AppleScript" acción:

enter image description here


5 - Pegar este código:


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 - Guardar el flujo de trabajo y el nombre como desee:

enter image description here


7 - USO: Seleccione tantas carpetas como desee, haga clic en, servicios, encontrar el flujo de trabajo:

enter image description here

Seleccione el archivo que desea copiar (cuidado de la ventana puede estar oculta detrás de la principal):

enter image description here

Haga clic en "Elegir" y espera que la copia.

enter image description here

PD: el archivo reemplazará a la existente con el mismo nombre.

2voto

qarma Puntos 71

Conforme a lo solicitado, aquí es una solución viable como hemos explicado en el hilo de comentarios. En la actualidad, la situación es que tienes varios archivos en el portapapeles, que necesitan para ser pegado en varias carpetas de destino. Estas carpetas de destino, están llamados "CSS" y residir dentro de un conjunto de padres de carpetas (nombres que terminan "_11") que son capaces de seleccionar en masa.

Después de hacer eso, puede ejecutar el siguiente Automator servicio, ya sea desde el menú contextual del botón derecho y seleccionar debajo de los Servicios (o el de Mojave equivalente); o mediante la asignación de un método abreviado de teclado en Preferencias del Sistema, y la activación del servicio con la pulsación de una tecla de acceso directo.

El Automator servicio en cuestión se parece a esto:

Automator service in macOS

El AppleScript código utilizado en la Run AppleScript acción está por debajo. El AppleScript lee la lista de los archivos contenidos en el portapapeles; los aislamientos de la "CSS" subcarpetas en cada uno de los padres carpetas que fueron aprobadas en el servicio ( "CSS" carpeta se creará si no existe ya); y, a continuación, los duplicados de los archivos del portapapeles en la "CSS" directorios.

Si el portapapeles no contiene archivos, usted escuchará un pitido y no se realizan más acciones.

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X