Tôi có thể thay đổi trạng thái khóa tệp ("chỉ đọc") trong menu ngữ cảnh của tệp:
Không có mục menu cho việc này.
Làm cách nào tôi có thể tạo một mục menu Finder (ngữ cảnh) để đặt, xóa hoặc chuyển cờ này nhanh hơn?
Tôi có thể thay đổi trạng thái khóa tệp ("chỉ đọc") trong menu ngữ cảnh của tệp:
Không có mục menu cho việc này.
Làm cách nào tôi có thể tạo một mục menu Finder (ngữ cảnh) để đặt, xóa hoặc chuyển cờ này nhanh hơn?
Câu trả lời:
Bạn có thể tạo một mục menu mới thực hiện điều đó bằng cách tạo một Dịch vụ nhận tệp và thư mục làm đầu vào trong bất kỳ ứng dụng nào trong Automator.
Bạn có hai lựa chọn thực hiện. Chọn một trong hai hành động của Trình tự động hóa để xây dựng quy trình dịch vụ với:
Mã dưới đây thực hiện lệnh Toggle , vì nó phức tạp nhất.
Biến thể này sử dụng stat
để đọc các cờ được đặt cho tệp. Đây là những giá trị giống như thường được hiển thị bằng cách chạy ls -lO
, nhưng stat
là một giải pháp sạch hơn để đọc các giá trị. Cờ bị khóa, hoặc uchg
, có giá trị 0x2
, vì vậy đó là những gì chúng tôi đang kiểm tra.
chflags
được sử dụng để thay đổi giá trị và growlnotify
, một phần tùy chọn của Growl , được sử dụng để hiển thị thông báo lỗi hoặc thành công.
Sử dụng đoạn mã bash script sau đây như một phần của hành động 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
Cấu hình hành động để nhận đầu vào làm đối số .
Sử dụng đoạn mã AppleScript sau đây như một phần của hành động Chạy 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
Nếu hành động không thành công, ví dụ vì thiếu quyền, một hộp thoại sẽ được hiển thị cho mỗi tệp không được thay đổi.