รายการเมนูบริบทเพื่อล็อค / ปลดล็อกไฟล์ใน Finder ได้เร็วขึ้น


3

ฉันสามารถเปลี่ยนสถานะการล็อกไฟล์ ("อ่านอย่างเดียว") ในเมนูบริบทของไฟล์:

ป้อนคำอธิบายรูปภาพที่นี่

ไม่มีรายการเมนูสำหรับสิ่งนี้

ฉันจะสร้างรายการเมนู Finder (บริบท) เพื่อตั้งค่าลบหรือสลับธงนี้ได้เร็วขึ้นได้อย่างไร

คำตอบ:


4

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

คุณมีสองตัวเลือกในการใช้งาน เลือกหนึ่งในสองการกระทำอัตโนมัติเพื่อสร้างเวิร์กโฟลว์บริการด้วย:

  • เรียกใช้ Shell Script
  • เรียกใช้ AppleScript

รหัสด้านล่างใช้คำสั่งสลับเนื่องจากมันซับซ้อนที่สุด

เรียกใช้ Shell Script

ตัวแปรนี้ใช้statเพื่ออ่านค่าสถานะที่ตั้งค่าสำหรับไฟล์ เหล่านี้เป็นค่าเดียวกับที่มักจะแสดงโดยการทำงานls -lOแต่statเป็นวิธีที่สะอาดกว่าในการอ่านค่า ธงที่ถูกล็อคหรือuchgมีค่า0x2ดังนั้นนั่นคือสิ่งที่เรากำลังตรวจสอบ

chflagsใช้ในการเปลี่ยนค่าและgrowlnotifyเป็นส่วนเสริมของGrowl ที่ใช้แสดงความสำเร็จหรือข้อความแสดงข้อผิดพลาด

ป้อนคำอธิบายรูปภาพที่นี่

ใช้ข้อมูลโค้ด bash script ต่อไปนี้เป็นส่วนหนึ่งของการดำเนินการ Run Shell Script:

for f in "$@"
do
    let "$( stat -f "%f" "$f" ) & 0x2"
    if [ $? -ne 0 ] ; then
        chflags uchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to lock $f!"
        /usr/local/bin/growlnotify "Locked File" -m "$f was locked!"
    else
        chflags nouchg "$f" || /usr/local/bin/growlnotify "Error" -m "Failed to unlock $f!"
        /usr/local/bin/growlnotify "Unlocked File" -m "$f was unlocked!"
    fi
done

การกำหนดค่าการดำเนินการที่จะได้รับการป้อนข้อมูลเป็นข้อโต้แย้ง

 เรียกใช้ AppleScript

ใช้ข้อมูลโค้ด AppleScript ต่อไปนี้เป็นส่วนหนึ่งของการดำเนินการ Run AppleScript:

on run {input, parameters}
repeat with f in input
        try
            tell application "Finder" to set locked of f to (not locked of f)
        on error errmsg
            tell application "Finder" to display alert errmsg
        end try
    end repeat
end run

หากการดำเนินการล้มเหลวเช่นเนื่องจากสิทธิ์หายไปจะมีกล่องโต้ตอบปรากฏขึ้นหนึ่งรายการต่อไฟล์ที่ไม่สามารถเปลี่ยนแปลงได้

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.