2 votos

¿Cómo puedo crear un archivo ZIP protegido por contraseña a partir de una selección en la aplicación Finder?

Me gustaría utilizar "Acciones rápidas" dentro de la aplicación Finder a partir de una selección de archivos y/o carpetas para hacer un archivo ZIP protegido por contraseña.

3 votos

Si esta es la solución/respuesta, ¿podría reescribir la pregunta para que sea realmente una pregunta y luego publicar la solución como respuesta a continuación? Podría ayudar a proporcionar algo más de contexto, incluyendo cómo combinar esto con Automator.

2voto

wch1zpink Puntos 11

Esta no es una solución directa, sin embargo puede ser usada como una solución alternativa porque creará un archivo de imagen de disco (.dmg) de todos los archivos y/o carpetas seleccionados del Finder, ya sea que la selección sea de un solo elemento o de múltiples elementos.

global myPassword

property destinationFolder : (path to documents folder)
property theName : missing value
property isTrue : missing value

set theName to "New Encrypted Disk Image"

run setPassword
delay 0.1
activate
set deleteOriginals to button returned of (display dialog "Would You Like To Delete The Original Files After The Disk Image Has Been Created?" buttons {"Yes", "No"} default button 1)
delay 0.1
activate
set theName to (display dialog ¬
    "Would You Like To Name Your New Disk Image?" default answer ¬
    "New Encrypted Disk Image" buttons {"No", "Re-Name"} default button 2 ¬
    with title "Name Disk Image?")
delay 0.1

if button returned of theName is "Re-Name" then
    set theName to text returned of theName
else
    set theName to "New Encrypted Disk Image"
end if

tell application "Finder"
    if exists of alias ((destinationFolder as text) & theName) then ¬
        delete alias ((destinationFolder as text) & theName)
    set tempFolder to (make new folder at destinationFolder ¬
        with properties {name:theName}) as alias
    set theFiles to selection as alias list
    duplicate theFiles to tempFolder
    set theContainer to POSIX path of (container of tempFolder as alias)
    set filesWithTheName to count of (items of (container of tempFolder as alias) ¬
        whose name contains theName and name extension is "dmg")
    if filesWithTheName is greater than 0 then ¬
        set theName to theName & filesWithTheName + 1
end tell

set theDMG to do shell script "printf  \"" & myPassword & "\" |  hdiutil create -encryption AES-256 -stdinpass -srcfolder '" & POSIX path of tempFolder & "' '" & theContainer & theName & "'"

tell application "Finder" to delete tempFolder

set theOffset to offset of "/" in theDMG
set theDMG to POSIX file (text theOffset thru -1 of theDMG) as alias

tell application "Finder" to set newName to name of theDMG

if deleteOriginals is "Yes" then
    tell application "Finder" to delete theFiles
end if

tell application "Finder"
    activate
    reveal theDMG
end tell

script failedPassVerify
    activate
    display dialog ¬
        "You Have Unsuccessfully Verified Your Password 3 Times In A Row... Please Try Again Later" buttons {"OK"} default button "OK" with title ¬
        "UNSUCCESSFUL PASSWORD VERIFICATION" with icon 0 giving up after 10
    quit me
end script

script setPassword
    set theCount to 0
    repeat until isTrue = true
        activate
        set myPassword to text returned of (display dialog ¬
            ("ENTER THE PASSWORD TO ENCRYPT DISK IMAGE: " & theName) ¬
                default answer "" with hidden answer)
        activate
        set myPassword2 to text returned of (display dialog ¬
            "PLEASE VERIFY YOUR PASSWORD" default answer "" with hidden answer)
        set isTrue to myPassword2 = myPassword
        if isTrue = false then
            set theCount to theCount + 1
            if theCount = 3 then run my failedPassVerify
            activate
            display alert "PASSWORDS DO NOT MATCH" message ¬
                "PASSWORDS DO NOT MATCH" giving up after 3
        end if
    end repeat
    set theCount to 0
    set isTrue to missing value
end script
  1. Abrir Automator
  2. Hacer una nueva Acción Rápida
  3. Asegúrate de que recibe "archivos o carpetas" de Finder.app
  4. Selecciona Ejecutar Apple script y copia/pega el código
  5. Guárdalo como "Nueva imagen de disco encriptada"

1voto

redsky Puntos 19

Me gustaría compartir un script de apple, juntando diferentes soluciones que encontré anteriormente:

set display_text to "Please enter your password:"
repeat
    considering case
        set init_pass to text returned of (display dialog display_text default answer "" with hidden answer)
        set final_pass to text returned of (display dialog "Please verify your password below." buttons {"OK"} default button 1 default answer "" with hidden answer)
        if (final_pass = init_pass) then
            exit repeat
        else
            set display_text to "Mismatching passwords, please try again"
        end if
    end considering
end repeat

tell application "Finder"
    set theItems to selection
    set theItem to (item 1 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 (fileName & ".zip")
    do shell script "cd '" & theFolder & "'; zip -x .DS_Store -r0 -P '" & final_pass & "' " & zipFile & " ./'" & fileName & "'"
end tell
  1. Abrir Automator
  2. Hacer una nueva Acción Rápida
  3. Asegúrate de que recibe "archivos o carpetas" de Finder.app
  4. Selecciona Ejecutar Apple script y copia/pega el código
  5. Guárdalo como "Hacer un ZIP protegido con contraseña"

Ahora puedes seleccionar cualquier archivo(s) y/o carpeta(s) en la aplicación Finder y, haciendo clic con el botón derecho, elegir "Acción rápida" -> "Crear ZIP protegido con contraseña". Y ya está.

1 votos

¿Has probado tu código? Con múltiples archivos seleccionados en el Finder, el único archivo que se añade al archivo zip creado, es el archivo que da nombre a la carpeta zip. Además, el comando do shell script es un comando Standard Additions. No debe incluirse dentro del bloque tell del Finder.

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