Как заархивировать папку с AppleScript-objc? - PullRequest
0 голосов
/ 19 июня 2019

Я генерирую несколько журналов в системе, затем копирую их в / tmp / MyFolder, а затем Я перемещаю папку на рабочий стол, я пытаюсь сжать ее, прежде чем двигаться дальше, но я не знаю, как это сделать, я попробовал следующее:

tell application "Finder"
    set theItem to "/tmp/MyFolder" as alias
    set itemPath to quoted form of POSIX path of theItem
    set fileName to name of theItem
    set theFolder to POSIX path of (container of theItem as alias)
    set zipFile to quoted form of (theFolder & fileName & ".zip")
    do shell script "zip -r " & zipFile & " " & itemPath
end tell

1 Ответ

1 голос
/ 19 июня 2019

Хотя это не скрипт AppleScript-ObjC, я публикую исправленную версию вашего собственного скрипта, чтобы он функционировал так, как вы описали:

tell application "System Events"
    set itemPath to "/tmp/MyFolder"
    set theItem to item itemPath
    set fileName to quoted form of (get name of theItem)
    set theFolder to POSIX path of (container of theItem)
    set zipFile to fileName & ".zip"
end tell

do shell script "cd " & quoted form of theFolder & ¬
    "; zip -r " & zipFile & space & fileName & ¬
    "; mv " & zipFile & space & "~/Desktop/"

Пытаясь избежать использования Finder для операций с файловой системой.Это звучит нелогично, но не подходит для этого.Используйте Системные события , который, среди многих других преимуществ, имеет возможность обрабатывать пути posix.

Сценарий теперь архивирует папку и содержащиеся в ней элементы в архив на /tmp/MyFolder.zip, затемперемещает этот архив на рабочий стол.

...