2 votos

Ruta de acceso relativa en Automator

Quiero hacer una acción de Automator que las copias de un conjunto de archivos de una carpeta a otra carpeta que es una carpeta y, a continuación, dos carpetas abajo a partir de los archivos originales. En otras palabras: ../Carpeta1/Carpeta2. La acción de Automator iba a estar en la misma carpeta que los archivos, pero la root de la carpeta será duplicada y cambió de nombre a través de varios equipos, por lo que la ruta de acceso DEBE ser relativa.

Mi entendimiento es que necesito ejecutar un Applescript para agarrar la ruta de acceso actual y, a continuación, hacer...algo. Tengo cero experiencia en programación. Alguien puede ayudar?

enter image description here

1voto

beroe Puntos 1605

En lugar de AppleScript, se puede hacer mediante la adición de un Ejecutar secuencia de Comandos de Shell módulo de con este contenido:

for F in "$@"; do
    cp "$F" "${F%/*/*}/Folder1/Folder2/${F##*/}"
done 

Editar los nombres de Carpeta1/Carpeta2 a coincidir con su caso.

Elegir Como argumentos de su Pase de Entrada: pop-up a la derecha donde dice a stdin.

$@ almacena la ruta completa de todos los archivos seleccionados. $F cada individuo ruta del archivo a medida que se procesa por la for de bucle. El extraño ${F%/*/*} es la ruta de acceso completa del archivo de menos el nombre del archivo y su padre nombre de la carpeta. El extraño ${F##*/} es el nombre del archivo en sí.

Prueba primero para la seguridad!

Image of script

La otra manera de hacerlo, que creo que sería más fácil en el largo plazo:

  1. Abra una ventana de terminal.
  2. Tipo cdespacio y arrastre la carpeta que contiene sus archivos en la ventana. (Esto va a pegar en la ruta de acceso a esa carpeta. Asegúrese de incluir el espacio después de la cd antes de arrastrar-y-gota.)
  3. Tipo cp *Video* ../Folder1/Folder2
  4. Hecho!

0voto

Malik hassan Puntos 16

ACTUALIZACIÓN* recortado por el código un poco, y corregir el camino

Desde que pidió applescript...

on run {input, parameters}
    tell application "Finder"
        set thefolderPath to "folder1:folder2:"
        set mycontainer to (path to me)
            set movePath to folder thefolderPath of container of (path to me)'s container as alias
        duplicate input to movePath

    end tell

end run

Esto también lo hace con la copia de acción desde la duplicación se realiza aquí también.


ACTUALIZACIÓN 2

Con esta versión. No importa donde la Aplicación. El camino es elaborado por donde están los archivos.

on run {input, parameters}
    set thefolderPath to "folder1:folder2:"
    tell application "Finder"
        set thisItem to item 1 of input as alias
         set movePath to folder thefolderPath of container of (thisItem)'s container as alias
        duplicate input to movePath

    end tell

end run

ACTUALIZACIÓN 3

Esta versión es la misma que la actualización 2. Pero la prueba de su carpeta1 y carpeta2.

Si la carpeta no existe, se va a hacer y mover los archivos a ellos. Si sólo carpeta2 no existe. A continuación, sólo hacer que la carpeta dentro de carpeta1. Significado de los elementos existentes en la carpeta1 son seguros.

on run {input, parameters}
    set thefolderPath to "folder1/folder2/"
    tell application "Finder"
        set thisItem to item 1 of input as alias
        set movePath to container of (thisItem)'s container as alias
        set theTestPath to ((POSIX path of movePath) & "/" & thefolderPath)

        if (do shell script "/bin/test -e " & quoted form of theTestPath & " ; echo $?") is "1" then
            -- 1 is false
            do shell script "/bin/mkdir -p " & quoted form of theTestPath

        end if
        set theActualPath to (POSIX file theTestPath) as alias
        duplicate input to theActualPath

    end tell

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