Удаление файла с помощью Applescript. Плохой сценарий? - PullRequest
1 голос
/ 18 мая 2011

Я очень плохо знаком с Applescript, но за последние пять лет использовал другие языки сценариев.Я написал быстрый скрипт, который удаляет некоторые файлы / каталоги на основе совпадений имен файлов и даты модификации.Я также несколько раз тестировал его, но теперь у меня сложилось впечатление, что он либо плохо написан, либо опасен в том смысле, что он может удалить больше, чем необходимо.

Если вы профессиональный сценарист,не могли бы вы сказать мне, если что-то не так с моим сценарием?Это небезопасно?Я был убежден, что после разговора с коллегой, который считает, что он нанес некоторый «ущерб».

Вот сценарий:

set my_path to "Macintosh HD:Users:infmz:Backups"
    tell application "Finder"
        delete (every item of folder my_path whose modification date is less than ((get current date) - 4 * days) and name contains "backup_id")
        empty trash
    end tell

В частности, я пытаюсь удалить папки резервных копийкоторые старше трех дней.Все такие папки содержат строку «backup_id» в своих именах.

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Если RAID потерял питание, то, вероятно, это нанесло больше вреда, чем ваш скрипт. Прочитав, я не заметил ничего необычного.

Относительно того, на что указал @Philip - Trash - это система undo для удаления файлов. Поэтому автоматическая очистка без согласия пользователя является своего рода невежливым.

Если резервные копии находятся на другом томе (как я понял, это какой-то общий RAID), вы можете посмотреть, как очистить корзину только для одного тома .

Эта ссылка также содержит пример того, как сначала подтвердить удаление с пользователем.

0 голосов
/ 18 мая 2011

Если это весь сценарий, то я бы сказал, что один «небезопасный» элемент, который действительно бросается в глаза - это то, что вы не анализируете путь к папке, чтобы убедиться, что сценарий не направлен в жизненно важную папкунапример, «Macintosh HD: System:» или «Macintosh HD: Library:».

Другое дело, что я не думаю, что скрипт достаточно хорошо разбирает файлы перед удалением.Это скорее вопрос подхода, но если бы это был я, я сначала сгенерировал бы список исходных целевых файлов (см. «Получить полное содержимое каталога с помощью AppleScript» * ), а затем проанализировал этот список на предмет реальных целей.для удаления.

Кроме того, я бы сгенерировал журнал выполненных действий и удалил команду «empty trash», чтобы дать пользователю возможность дважды проверить действия сценария перед окончательным удалением.

Было бы полезно описать, какой ущерб наблюдал другой пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...