Applescript Ext Loop cedo

0

Eu criei um loop de AppleScript que automatiza uma tarefa repetitiva. Ele solicita a quantidade de vezes em loop e, em seguida, funciona.

No entanto, me pediram uma maneira de sair do loop, se, por exemplo, alguém colocar acidentalmente muitos loops.

Existe uma maneira de um usuário sair de um loop com um comando do teclado?

on run {input, parameters}

repeat input times

    tell application "AvidMediaComposer" to activate

    tell application "System Events"
        key code 29 using command down
        delay 0.2
        key code 124
        delay 0.2
        key code 39
    end tell

end repeat end run

desde já, obrigado

byrnec25
fonte
escapar, não, mas você pode definir um máximo
Tetsujin
@ Tetsujin talvez um Continue?diálogo a cada número x de loops?
Michael Frank
Continuar o diálogo pode funcionar, obrigado, só preciso encontrar o equilíbrio entre ser automatizado e manual.
Byrnec25
Como script um diálogo contínuo a cada número x de loop?
Byrnec25

Respostas:

0

Eu criaria dois scripts. Um para fazer o trabalho real, que fica de olho no sinal que você deseja abortar, e outro que envia o sinal. Assim...

Script de trabalho com verificações frequentes de sinal ...

set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")

repeat
    # Lets do wome 'work'
    set r to (random number from 0.1 to 1)
    delay r

    set abortNow to false
    try
        do shell script "test -f " & abortFile
        set abortNow to true
    end try

    if abortNow is true then 
        # Should remove abort.cmd here 
        exit repeat
    end if    
end repeat

Script que envia o sinal ...

set abortPath to POSIX path of (path to home folder as string)
set abortFile to quoted form of (abortPath & "abort.cmd")

set r to display dialog "Send signal to worker?" as text ¬
    buttons {"No", "Yes"} default button ¬
    "Yes" with icon stop with title "Send Signal?"

if button returned of r is "Yes" then
    do shell script "touch " & abortFile
end if

Uma maneira mais elaborada é usar o cool " ASObjC Runner " para mostrar uma caixa de diálogo de progresso com um botão de abortar que você pode pressionar para interromper seu loop. Aqui está uma pergunta relacionada com o código de exemplo.

Cara chamado Ben
fonte