Pegar archivos a múltiples destinos

0

Me meto en esta situación con bastante frecuencia pero no he encontrado una solución. Tengo un grupo de archivos CSS en el portapapeles que necesito pegar y reemplazar en varias carpetas de destino diferentes. La estructura de mi carpeta es similar a

.
├── 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 en todas las carpetas CSS cuyo contenedor finaliza en _11 pero no en ninguna de las otras.

El contenido de las carpetas de destino no importa, solo necesito reemplazarlos con los nuevos archivos. ¿Hay una forma sencilla de pegar estos archivos en múltiples destinos a la vez? También podría ser un flujo de Automator o un comando de Terminal.

    
pregunta Luciano 31.10.2018 - 17:11

2 respuestas

2

1: abre Automator y crea un nuevo servicio:


2:configuraelserviciopararecibirarchivosycarpetasenelFinder:


3-Arrastraunaacción"Pedir artículos del Finder":


4-Arrastraunaacción"Ejecutar AppleScript":


5-Pegueestecódigo:

onrun{input}setnumItemstocountinputsettheFiletoitem(numItems)ofinputastextsetnumItemstonumItems-1repeatwhilenumItemsisnot0tellapplication"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: guarde su flujo de trabajo y asígnele el nombre que desee:


7-USO:Seleccionetantascarpetascomodesee,hagaclicconelbotónderechoenservicios,encuentresuflujodetrabajo:

Seleccioneelarchivoquedeseacopiar(tengaencuentaquelaventanasepuedeocultardetrásdelaprincipal):

Hazclicen"Elegir" y espera la copia.

PS: el archivo reemplazará los existentes con el mismo nombre.

    
respondido por el Mateus Ribeiro 31.10.2018 - 23:31
1

Tal como se solicitó, aquí hay una solución viable como hemos discutido en el hilo de comentarios. Actualmente, la situación es que tiene varios archivos en el portapapeles que deben pegarse en varias carpetas de destino. Todas estas carpetas de destino se llaman "CSS" y residen dentro de un conjunto de carpetas principales (los nombres que terminan en "_11" ) que puede seleccionar en masa.

Después de hacer eso, puede ejecutar el siguiente servicio Automator , ya sea desde el menú contextual del botón derecho y seleccionándolo bajo Servicios (o el equivalente de Mojave); o asignándole un método abreviado de teclado en Preferencias del sistema , y activando el servicio con solo presionar una tecla de acceso rápido.

El servicio Automator en cuestión tiene este aspecto:

ElcódigoAppleScriptutilizadoenlaacciónRunAppleScriptseencuentraacontinuación.ElAppleScriptleelalistadearchivoscontenidosenelportapapeles;aíslalassubcarpetas"CSS" en cada una de las carpetas principales seleccionadas que se pasaron al servicio (la carpeta "CSS" se crea si no existe); y luego duplica los archivos del portapapeles en los directorios "CSS" .

Si el portapapeles no contiene ningún archivo, oirá un pitido y no se realizará ninguna otra acción.

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
    
respondido por el CJK 01.11.2018 - 18:11

Lea otras preguntas en las etiquetas