1 votos

¿Por qué mi applescript para comprobar si existe un archivo fallando?

Tengo un applescript aplicación que introduce un nombre de usuario y comienza una descarga basa en que el nombre de usuario. En la app puedo utilizar el código siguiente para comprobar si un archivo ya existente y, a continuación, cambie el nombre del archivo si lo hace.

tell application "Finder"
if exists "~/Downloads/Conversion/" & cbUsername & ".flv" as POSIX file then
    set x to 1
    repeat
        set newCbFilename to cbUsername & "_" & x as string
        if exists "~/Downloads/Conversion/" & newCbFilename & ".flv" as POSIX file then
            set x to x + 1
        else
            exit repeat
        end if
    end repeat
    copy newCbFilename to finalCbFilename
    display dialog "Filename already exists " & "File will be named: " & finalCbFilename & ".flv" buttons "OK" default button "OK" with title "Error" with icon caution
else
    copy cbUsername to finalCbFilename
end if
end tell

De repente, ayer dejó de funcionar correctamente. Yo había añadido el siguiente código para asegurarse de que la carpeta estaba salvando a existido.

tell application "System Events"
if not (exists folder "~/Downloads/Conversion") then
    do shell script "mkdir ~/Downloads/Conversion"
end if

Incluso cuando yo comente que el código ya que aún no funciona. ¿Qué hice mal? final dicen

4voto

Brian Puntos 11

Parece que el Buscador necesita la ruta absoluta a la carpeta de inicio en lugar de la ruta de acceso relativa. En lugar de iniciar el camino con ~/, que necesita para iniciar con /Users/username/.

En lugar de escribir el nombre de usuario en la secuencia de comandos, puede tener AppleScript construir la ruta de acceso absoluta sobre la marcha:

set homePath to POSIX path of (path to home folder)

A continuación, puede reemplazar "~/ con homePath & "

Por ejemplo:

if exists "~/Downloads/Conversion/" & cbUsername & ".flv" as POSIX file then

sería

if exists homePath & "Downloads/Conversion/" & cbUsername & ".flv" as POSIX file then

Alternativamente, si sólo vas a usar ~ con el camino de ~/Downloads/Conversion/, en su lugar podría cambiar toda la ruta de acceso a una variable:

set cbPath to POSIX path of (path to home folder) & "Downloads/Conversion/"

A continuación, el final de la secuencia de comandos sería:

set cbPath to POSIX path of (path to home folder) & "Downloads/Conversion/"

tell application "Finder"
    if exists cbPath & cbUsername & ".flv" as POSIX file then
        set x to 1
        repeat
            set newCbFilename to cbUsername & "_" & x as string
            if exists cbPath & newCbFilename & ".flv" as POSIX file then
                set x to x + 1
            else
                exit repeat
            end if
        end repeat
        copy newCbFilename to finalCbFilename
        display dialog "Filename already exists " & "File will be named: " & finalCbFilename & ".flv" buttons "OK" default button "OK" with title "Error" with icon caution
    else
        copy cbUsername to finalCbFilename
    end if
end tell

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