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

1869
Matthew Robertson

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

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

do shell script ("unrar v " & theItem) 

Оболочка будет выплевывать, помимо прочего, это:

... Архив тестирования thefile.r19 96% ... Архив тестирования thefile.r20 99% ... Расчет контрольных сумм всех томов. Не удается найти том thefile.r21… thefile.avi - сбой CRC Всего ошибок: 1

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

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

1

1 ответ на вопрос

1
Chealion

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

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

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

if output contains "CRC Failed" then return end if 

Чтобы избежать необходимости запуска, unrar vвы можете реализовать проверку на расширение файла (либо когда вы устанавливаете theItemAppleScript, либо, возможно, любым другим способом, который вы используете для мониторинга папки), если вы вручную выполнили запущенное задание и не использовали действия с папкой )

Для получения дополнительной информации do shell scriptознакомьтесь с Технической запиской Apple 2065 .

Поскольку сжатый файл может состоять из любого количества частичных RAR, вы не можете использовать расширение файла, чтобы проверить, все ли они там. Но спасибо за помощь AppleScript. Я не знал о «содержит». Matthew Robertson 14 лет назад 0
@Matthew Robertson: Так как они содержат `.r [0-9] +`, это может быть возможно, так как Applescript поддерживает регулярные выражения с помощью команды `find`, но это то, что я никогда не использовал лично, поэтому у меня нет полезного образец. (еще?) Chealion 14 лет назад 0
Хммм. Я мог бы сделать массив имен файлов, получить самое высокое (скажем, .r20) и проверить, уменьшаются ли они последовательно до r01. (Хотя есть один сценарий, когда r01-r20 были загружены, и мы ждем r21.) Я поиграюсь с ним. Приветствия. Matthew Robertson 14 лет назад 0

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