He compilado el siguiente script para comprimir varias carpetas sólo con su contenido.
( Así, por ejemplo, la carpeta X que contiene los archivos A, B y C formará un archivo zip que contiene A, B y C y no la carpeta X como padre. )
on run {input, parameters}
tell application "Finder"
set theItems to selection
repeat with i from 1 to (count of theItems)
set theItem to (item i of theItems) as alias
set itemPath to quoted form of POSIX path of theItem
set fileName to name of theItem
set theFolder to POSIX path of (container of theItem as alias)
set zipFile to quoted form of (theFolder & fileName & ".zip")
do shell script "zip -jr " & zipFile & " " & itemPath
delete (item i of theItems)
end repeat
end tell
return input
end run
Al probarlo con una simple carpeta y unos cuantos archivos al azar, el script funciona bien. Pero cuando la carpeta contiene muchos archivos, aparece el siguiente error:
'advertencia de zip: primer nombre completo: /Usuarios/laurens/Escritorio/Carpeta de pruebas/.DS_Store segundo nombre completo: /Usuarios/laurens/Escritorio/Carpeta de pruebas/.DS_Store el nombre en el archivo zip se repite: .DS_Store esto puede ser el resultado de usar -j
error de cremallera: Argumentos de comando no válidos (no se pueden repetir nombres en el archivo archivo)'
He comprobado la misma carpeta en Windows (a través de Parallels), y no veo ningún archivo .DS_Store, tampoco estoy seguro de por qué el script hace referencia a esos archivos en lugar de a las carpetas...
No sé qué pensar de esto.