0 votos

Applescript: Copiar/Duplicar sólo si se cumple el requisito de tamaño

¿Cómo escribo la condición de duplicar si se cumple el requisito de tamaño en applescript?

Esto es lo que tengo:

set src to POSIX path of "path here"
set dst to POSIX path of "path here"
(*Some if statement here to check size of file*)
duplicate files in folder (POSIX file src as alias) to (POSIX file dst as alias)

Estoy tratando de hacer que sólo se duplique si el tamaño del archivo es menor que algún valor y estoy luchando para averiguar la declaración if que necesito. Estaba pensando en iterar manualmente a través de cada archivo y comprobar el tamaño y la duplicación, sin embargo, no podía averiguar el código para que tampoco.

La ayuda es muy apreciada.

1voto

Mockman Puntos 16

Asumiendo que no estás planeando duplicar incontables miles de archivos, aquí hay un simple script para duplicar archivos de una carpeta a otra.

En primer lugar, genera una lista de archivos en la carpeta de origen. A continuación, recorre cada uno de los elementos de la lista y, si el tamaño del archivo está dentro del rango, lo añade a una lista coincidente. Una vez completada, duplica los archivos coincidentes en la carpeta de destino.

tell application "Finder"
set srcFol to ((path to downloads folder as text) & "here:")
set dstFol to ((path to desktop as text) & "there:")

set everyFile to (get files of folder srcFol as alias list)
set sizedFiles to {}
repeat with aFile in (a reference to everyFile)
    set sz to size of aFile
    if sz is greater than 200000 and sz is less than 299000 then
        set end of sizedFiles to aFile
        set label index of aFile to 4 -- used to highlight matching files during testing
    end if
end repeat

duplicate sizedFiles to dstFol with replacing
end tell

NB la línea 'set label index' simplemente pone una etiqueta de color en cada archivo. La utilizo durante las pruebas para resaltar los archivos que se duplican. Coméntela una vez que confirme que todo funciona. Si no desea que se sobrescriban los archivos existentes, elimine la línea with replacing .

Si planea duplicar carpetas con muchos y muchos archivos (o con subcarpetas) entonces podría considerar do shell script junto con algo como ditto o rsync.

1voto

wch1zpink Puntos 11

Lo siguiente AppleScript le permite elegir una carpeta para buscar los archivos por tamaño. A continuación, le permite elegir una carpeta de destino para copiar el resultado de los archivos. Finalmente, le permite introducir los criterios de tamaño de los archivos a buscar.

A continuación, copiará los archivos que cumplan los criterios de búsqueda en la carpeta de destino elegida.

property searchFolder : missing value
property destinationFolder : missing value

activate
set {fileSize, recursiveSearch} to {text returned, button returned} of ¬
    (display dialog "Search For Files Options:" & linefeed & linefeed & ¬
        "The provided example means searching for files greater than" & ¬
        " 10 MB and less than 50 MB." default answer "-size +10M -size -50M" buttons ¬
        {"Cancel", "Search Recursively", "Search"} default button 3 ¬
        with title "Search For Files" with icon 1)

if recursiveSearch = "Search" then
    folderChoices()
    set folderDepth to " -type f -mindepth 1 -maxdepth 1 "
else if recursiveSearch = "Search Recursively" then
    folderChoices()
    set folderDepth to " -type f -mindepth 1 "
end if

do shell script "find " & searchFolder & folderDepth & fileSize ¬
    & " -exec cp -p {} " & destinationFolder & " \\;"

on folderChoices()
    activate
    set searchFolder to quoted form of POSIX path of (choose folder with prompt ¬
        "Choose A Source Folder To Search" with invisibles)
    activate
    set destinationFolder to quoted form of POSIX path of (choose folder with prompt ¬
        "Choose A Destination Folder To Place Copied Files" with invisibles)
end folderChoices

También he añadido la opción de buscar recursivamente en todas las carpetas de la carpeta elegida.

enter image description here

También puede mezclar unidades de diferentes tamaños de esta manera:

  • -tamaño +100k -tamaño -1M (mayor de 100 kB y menor de 1 MB)
  • -tamaño +500M -tamaño -1G (mayor de 500 MB y menor de 1 GB)
  • -tamaño -3M (menos de 3 MB)

enter image description here

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