Applescript: Проверьте, перестала ли команда оболочки работать?

Я пишу AppleScript, чтобы наблюдать папку за завершенными загрузками, затем обработать их. Если я загружаю разделение файла через частичный RARs (.r01, .r02, … Бог я ненавижу их), они введут папку Completed случайным образом, поскольку они завершаются. Сценарий инициирует каждый раз, когда один из них завершается, но я не хочу, чтобы он начал авторазархивировать, пока все они не сделаны.

Таким образом, вот мое решение. В сценарии, когда я обнаруживаю rar, я сначала проверяю его для полноты:

do shell script ("unrar v " & theItem)

Оболочка выложит, среди прочего, это:

… Тестирующий архив thefile.r19 96% … Тестирующий архив thefile.r20 99%... Вычисление сумм управления всех объемов. Не может найти объем thefile.r21 … thefile.avi - CRC привел Полные погрешности к сбою: 1

Я плохо знаком с AppleScript. Что самый эффективный путь состоит в том, чтобы просканировать через это и определить, перестала ли проверка работать?

(С другой стороны, unrar v является трудоемким; там какой-либо лучший путь состоит в том, чтобы приблизиться к этой проблеме?)

1
задан 08.11.2009, 11:58

1 ответ

Если Вы изменяете свой код на:

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

Переменный вывод будет содержать вывод сценария оболочки, который Вы могли использовать для сравнения с тем, что Вы ожидаете для допустимого вывода.

if output contains "CRC Failed" then
    return
end if

Для того, чтобы избежать необходимости выполненный unrar v Вы могли реализовать проверку на расширении файла (также, когда Вы устанавливаете theItem в AppleScript или возможно в том, какой бы ни метод Вы используете для контроля папки - если Вы вручную сделали launchd задание и не использовали Действия Папки),

Для большего количества информации о do shell script проверьте Техническое примечание Apple 2065.

1
ответ дан 17.12.2019, 00:58
  • 1
    Так как сжатый файл может состоять из любого количества частичного RARs, Вы не можете использовать расширение файла, чтобы проверить, являются ли они всеми там. Но слова благодарности для справки AppleScript. Я не знал о, "содержит". – Matthew Robertson 09.11.2009, 01:32
  • 2
    @Matthew Robertson: Так как они содержат .r[0-9]+ это могло быть возможно, поскольку Applescript действительно поддерживает регулярные выражения с помощью find команда, но это - что-то, что я лично никогда не использовал так, у меня нет полезного образца. (уже?) – Chealion 09.11.2009, 09:26
  • 3
    Хм. Я мог сделать массив имен файлов, добраться, самый высокий (скажите, .r20), и проверьте, уменьшаются ли они последовательно к r01. (Хотя существует один сценарий, где r01 к r20 были загружены, и мы ожидаем r21.) я буду играть с ним.Удачи. – Matthew Robertson 09.11.2009, 10:53

Теги

Похожие вопросы