ฉันสามารถเปลี่ยนสถานะการล็อกไฟล์ ("อ่านอย่างเดียว") ในเมนูบริบทของไฟล์:
ไม่มีรายการเมนูสำหรับสิ่งนี้
ฉันจะสร้างรายการเมนู Finder (บริบท) เพื่อตั้งค่าลบหรือสลับธงนี้ได้เร็วขึ้นได้อย่างไร
ฉันสามารถเปลี่ยนสถานะการล็อกไฟล์ ("อ่านอย่างเดียว") ในเมนูบริบทของไฟล์:
ไม่มีรายการเมนูสำหรับสิ่งนี้
ฉันจะสร้างรายการเมนู Finder (บริบท) เพื่อตั้งค่าลบหรือสลับธงนี้ได้เร็วขึ้นได้อย่างไร
คำตอบ:
คุณสามารถสร้างรายการเมนูใหม่ที่ทำได้โดยการสร้างบริการที่รับไฟล์และโฟลเดอร์เป็นอินพุตในแอปพลิเคชันใด ๆใน Automator
คุณมีสองตัวเลือกในการใช้งาน เลือกหนึ่งในสองการกระทำอัตโนมัติเพื่อสร้างเวิร์กโฟลว์บริการด้วย:
รหัสด้านล่างใช้คำสั่งสลับเนื่องจากมันซับซ้อนที่สุด
ตัวแปรนี้ใช้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 ต่อไปนี้เป็นส่วนหนึ่งของการดำเนินการ 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
หากการดำเนินการล้มเหลวเช่นเนื่องจากสิทธิ์หายไปจะมีกล่องโต้ตอบปรากฏขึ้นหนึ่งรายการต่อไฟล์ที่ไม่สามารถเปลี่ยนแปลงได้