ฉันจะสร้าง Folder Action Script เพื่อ tar รายการที่อยู่ในโฟลเดอร์ได้อย่างไร


5

ฉันต้องการวาง / คัดลอกไฟล์ / โฟลเดอร์และบีบอัดไฟล์เหล่านั้นแล้วคัดลอกไปยังเดสก์ท็อปของฉัน นี่คือสิ่งที่ฉันรู้จนถึงตอนนี้ ... และมันก็ไม่ได้ช่วยอะไรมากนัก

on adding folder items to theFolder after receiving theAddedItems
repeat with x in theAddedItems

นี่จะสร้างรายการไฟล์ของฉันที่ถูกดร็อปไว้ในโฟลเดอร์ ตอนนี้คำสั่งการบีบอัดของฉัน ...

tar cvf - *variableForFileListHere* | gzip -9 - > files.tar.gz

อย่างใดฉันรู้ว่าฉันต้องฟีดรายการ "theAddedItems" ที่สร้างขึ้นในส่วนแรกของสคริปต์เพื่อคำสั่ง tar แต่ฉันไม่รู้จะทำยังไง กำลังอ่านเกี่ยวกับ tar และเป็นตัวเลือกเนื่องจากฉันแน่ใจว่ามีฟังก์ชั่น "รวม" สำหรับการชี้ไปยังรายการที่จะเพิ่มลงในที่เก็บถาวร

คำตอบ:


4

ลอง:

on adding folder items to theFolder after receiving theAddedItems
    set myList to {}
    repeat with x in theAddedItems
        set end of myList to quoted form of x's POSIX path & space
    end repeat
    set myList to text 1 thru -2 of (myList as text)
    do shell script "tar cvf " & myList & " | gzip -9 - > ~/Desktop/files.tar.gz"
end adding folder items to

ขอบคุณสำหรับสคริปต์ adayzdone ดูเหมือนว่าจะไม่ทำงานแม้ว่า ฉันแนบไฟล์ไปกับโฟลเดอร์และวางไฟล์. PDF บางไฟล์ไว้ในนั้น ไม่มีสิ่งใดปรากฏขึ้นบนเดสก์ท็อปของฉัน ฉันไม่ได้แก้ไขสคริปต์เลยเนื่องจากคุณทำให้มันพกพาได้สะดวกสำหรับทุกเครื่องและทุกคนจะใช้งาน ความคิดใด ๆ และขอขอบคุณอีกครั้งสำหรับเวลาของคุณ
BsdHelper

1
พื้นที่พิเศษท้ายรายการของฉันทำให้เกิดปัญหา ลองเลย
adayzdone

1
สคริปต์ของคุณทำงาน ขอบคุณมาก. ฉันจะใช้เป็นข้อมูลอ้างอิงในอนาคตเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ Applescript โดยทั่วไปและเล่นกับระดับการบีบอัดที่แตกต่างกัน ขอบคุณอีกครั้ง !!!
BsdHelper

7

แทนที่จะใช้เวลากับ Folder Actions (ซึ่งฉันและคนอื่น ๆ พบว่าไม่น่าเชื่อถือ) ฉันขอแนะนำให้คุณลองใช้ Hazel หรือไม่?

http://www.noodlesoft.com

การปฏิเสธความรับผิด:ฉันจะเริ่มต้นด้วยการบอกคุณว่ามันไม่ฟรี (เป็น US $ 28) แต่ถ้าคุณชอบระบบอัตโนมัตินี่คือสถานที่ที่จะเริ่ม มีการทดลองใช้ฟรี 14 วัน ฉันไม่เกี่ยวข้องกับ บริษัท อย่างสมบูรณ์ยกเว้นในฐานะผู้ใช้ที่มีความสุขมาก

Hazel ช่วยให้คุณสร้าง 'การกระทำของโฟลเดอร์' ได้อย่างง่ายดายโดยใช้ GUI ที่ดีซึ่งคล้ายกับการสร้างกฎ Mail.app คุณสามารถดำเนินการตามชื่อไฟล์นามสกุลชนิด (เช่น "รูปภาพเอกสารภาพยนตร์") และอื่น ๆ อีกมากมาย

นี่คือกฎที่ฉันใช้สำหรับไฟล์ / โฟลเดอร์ใด ๆ ที่เพิ่มเข้าไปใน ~ / Action / ZipIt /

สกรีนช็อตของกฎ Hazel

Hazel มองหาไฟล์ใด ๆ ที่ไม่ได้เป็นไฟล์เก็บถาวร (ฉันอาจบอกให้มันทำงานกับไฟล์ใด ๆ เลยก็ได้ แต่ฉันต้องการหลีกเลี่ยงการบีบอัดไฟล์ที่บีบอัดแล้ว) ฉันสามารถเพิ่มเกณฑ์อื่น ๆ (ซึ่งอาจเป็นตัวเลือกหรือข้อกำหนดเช่นคำสั่งบูลีน "AND" หรือ "หรือ")

สิ่งที่มันจะถูกเก็บถาวรแล้วย้ายไปยังเดสก์ท็อปจากนั้นมันจะปรากฏให้ฉันใน Finder

เห็นปุ่ม "ตัวเลือก" เล็กน้อยถัดจาก 'ย้ายไปยังเดสก์ท็อป' หรือไม่ คลิกที่สิ่งนั้นและคุณสามารถบอก Hazel ว่าต้องทำอย่างไรหากตรวจพบว่าไฟล์ที่คุณกำลังจะย้ายนั้นซ้ำกัน

นอกจากนี้ยังมีตัวเลือกให้ Finder นำมาไว้ด้านหน้าหรือไม่

มีการดำเนินการอื่น ๆ อีกมากมายที่ Hazel สามารถทำได้นอกเหนือจากการเก็บถาวร:

สกรีนช็อตของการกระทำสีน้ำตาลแดง

(หมายเหตุ: iPhoto และ Aperture นั้นเป็นสีเทาเพราะฉันไม่ได้ติดตั้ง)

ตัวเลือกในการเรียกใช้สคริปต์ AppleScript / Automator / shell หมายความว่าคุณมีอำนาจที่จะทำทุกสิ่งที่คุณจินตนาการได้

ฉันสามารถทำต่อไปได้ แต่นี่เป็นอีกตัวอย่างหนึ่ง: ฉันมีไฟล์ Hazel watch ~ / Downloads / สำหรับไฟล์. zip เมื่อพบพวกมันจะทำการซิปไฟล์ให้กับ ~ / Action / Unzipped / (คุณสามารถทำได้โดยบอกให้ Archive Utility ใช้โฟลเดอร์นั้นหรือใช้ Unarchiver) จากนั้น Hazel จะค้นหาในไฟล์ ~ / Action / Unzipped / เพื่อหาไฟล์ใหม่ซึ่งลงท้ายด้วย. app และหากพบให้ย้ายไฟล์เหล่านั้นไปที่ / Applications / และเปิดไฟล์เหล่านั้น Voila! ติดตั้งแอพทันที

ในโลกของแอพ 99, $ 28 อาจจะฟังดูมีค่าใช้จ่ายมหาศาล แต่สำหรับฉัน Hazel เป็นหนึ่งในเครื่องมือที่ใช้ในสิ่งที่ Apple ทำ แต่ไม่ดีมาก (การทำงานของโฟลเดอร์) และแทนที่ด้วยสิ่งที่จะทำให้คุณสงสัย ทำไม Apple ไม่ทำ คุณได้รับการทดลองใช้ 2 สัปดาห์และนักพัฒนาโดยเฉพาะที่ทำงานกับแอพนี้มานานหลายปีและเป็นคนที่ตอบคำถามได้ดี

ขออภัยที่ฟังดูเหมือน fanboi แต่เมื่อพูดถึง Hazel และแอพ Mac อื่น ๆ สองสามตัวฉันก็เป็นแบบนั้นจริงๆ


ฉันหวังว่ามันจะไม่เป็นความจริงเกี่ยวกับการกระทำของโฟลเดอร์ที่ไม่น่าเชื่อถือ แต่คุณพูดถูก หาก OP ต้องการความตื่นเต้นในการสร้างแอ็คชั่นโฟลเดอร์ของตนเองโปรดลองใช้ หากจำเป็นต้องใช้งานได้อย่างน่าเชื่อถือฉันจะหลีกเลี่ยงการกระทำของโฟลเดอร์ตามประสบการณ์ของฉัน
Daniel

ฉันไม่ต้องการเกี่ยวข้องกับสาธารณูปโภคใด ๆ ของบุคคลที่สาม แต่ขอบคุณ TJ Luoma สำหรับคำแนะนำ
BsdHelper

เหมือนกันกับการใช้สีน้ำตาลแดง ผู้ใช้ที่มีความสุขใช้งานได้ทั้งที่บ้านและที่ทำงาน
Gavin Anderson

0

มีตัวเลือกอื่น

แทนการกระทำของโฟลเดอร์ (และปัญหาที่เกิดขึ้นกับพวกเขา) คุณสามารถใช้QueueDirectoriesในlaunchdการเรียกเปลือกสคริปต์

ตัวอย่างเช่นจะเรียกสคริปต์เมื่อ/usr/local/bin/mktgz.shใดก็ตามที่ไฟล์ถูกใส่เข้าไป/Users/foo/Action/Gzip

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.tjluoma.mktgz</string>
    <key>Program</key>
    <string>/usr/local/bin/mktgz.sh</string>
    <key>QueueDirectories</key>
    <array>
        <string>/Users/foo/Action/Gzip</string>
    </array>
</dict>
</plist>

ผมมีรุ่นที่พัฒนามากขึ้นในการนี้ใช้ได้ที่https://github.com/tjluoma/mktgz


TJ ขอบคุณสำหรับคำตอบของคุณ ฉันคัดลอกทั้งคำตอบของคุณและ adayzdone แล้วและจะลองทั้งคู่เพื่อดูว่าฉันชอบอะไรดีที่สุด ฉันรู้ว่าผู้คนได้กล่าวถึง Applescript ว่า "ไม่น่าเชื่อถือ" แต่ฉันคิดว่ามันเป็นภาษาที่สนุกที่จะเรียนรู้แม้ว่าวิธีการของคุณจะมีประสิทธิภาพมากกว่าในระดับระบบ ขอบคุณอีกครั้ง.
BsdHelper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.