Applescript: Verifique se o comando shell falha?

1

Estou escrevendo um AppleScript para assistir a uma pasta de downloads concluídos e processá-los. Se eu estiver baixando um arquivo dividido em RARs parciais (.r01, .r02,… Deus, eu odeio esses ), eles entrarão na pasta Concluída aleatoriamente quando estiverem completos. O script será acionado toda vez que um deles for concluído, mas não quero que ele comece a desarquivar automaticamente até que todos estejam concluídos.

Então aqui está minha solução. No script, quando detecto um rar, primeiro eu o verifico se está completo:

do shell script ("unrar v " & theItem)

O shell vai cuspir, entre outras coisas, isto:

… Testing archive thefile.r19 96% … Testing archive thefile.r20 99% ... Calculating control sums of all volumes. Cannot find volume thefile.r21 … thefile.avi - CRC failed Total errors: 1

Sou novo no AppleScript. Qual é a maneira mais eficiente de verificar isso e determinar se a verificação falhou?

(Alternativamente, unrar v é demorado; existe alguma maneira melhor de abordar esse problema?)

    
por Matthew Robertson 08.11.2009 / 10:58

1 resposta

1

Se você alterar seu código para:

 set output to do shell script ("unrar v " & theItem)

A saída da variável manterá a saída do script de shell, que você pode usar para comparar com o que você espera de uma saída válida.

if output contains "CRC Failed" then
    return
end if

Para evitar ter que executar unrar v , você pode implementar uma verificação na extensão do arquivo (quando você define theItem no AppleScript ou no método que está usando para monitorar a pasta - se você tiver manualmente fez o job launchd e não usou ações de pasta)

Para mais informações sobre do shell script , consulte a Nota Técnica 2065 da Apple <. / p>     

por 08.11.2009 / 20:14