Câu trả lời:
Cách tập lệnh được lưu có ảnh hưởng lớn đến cách nó sẽ hoạt động trong Mac OS X. Có vẻ như tập lệnh của bạn chỉ được lưu dưới dạng tập lệnh và đó là nguyên nhân khiến trình chỉnh sửa tập lệnh mở mỗi khi bạn mở tập lệnh.
Để giải quyết vấn đề, hãy mở tập lệnh trong trình soạn thảo AppleScript và lưu nó dưới dạng một ứng dụng. Điều đó nên để lừa.
Các bước là (trong trình chỉnh sửa)
Tệp> Lưu dưới dạng> sau đó đặt Định dạng tệp thành ứng dụng rồi lưu.
Khi lưu tập lệnh, bạn có thể chọn "Ứng dụng" từ menu thả xuống Định dạng tệp; sau đó bạn sẽ có thể chạy nó và bạn vẫn có thể kéo nó vào Script Editor để mở tập lệnh; hoặc bạn có thể chọn Chỉ chạy để nó không lưu phiên bản có thể chỉnh sửa.
Ngoài ra, bạn có thể sử dụng osascript
lệnh trong Terminal, dưới dạng osascript /path/to/script
hoặc osascript -e "a short script here"
.
Bạn cũng có thể đặt tập lệnh vào thư mục ~ / Library / Sc scripts / Finder / và chạy trực tiếp từ menu Script.
Trong macOS High Sierra 10.13 không có Tệp / Lưu dưới dạng.
Một cách khác là tạo một Dịch vụ trong Automator sử dụng osascript
lệnh để chạy .scpt trong Finder.
(Tôi không sử dụng Automator bằng tiếng Anh nên từ ngữ có thể không chính xác)
Trong hộp Run AppleScript, nhập mã sau đây:
on run {input, parameters}
tell application "Finder"
--get the selected file
set selectedItem to (item 1 of (get selection))
--get location info (folder:file format)
set fileLocation to (selectedItem as alias) as string
--replace : with / with subroutine
set the semifinal to my replace_chars(fileLocation, ":", "/")
--remove Macintosh HD with subroutine
set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
end tell
do shell script "osascript " & "\"" & theFinal & "\""
return input
end run
on replace_chars(this_text, search_string, replacement_string)
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars
Tệp> Lưu và đặt tên như "Chạy AppleScript"
Bây giờ bạn có thể nhấp chuột phải vào tệp .scpt trong Finder và chọn "Chạy AppleScript" và xem tập lệnh của bạn được thực thi.
Tham khảo: Nguồn của chương trình con - AppleScript: Sub-Routines Essential
osascript
và chưa được mã hóa để xử lý nếu có nhiều tệp .scpt được chọn trong Finder. 2. Hoàn toàn không cần phải thông qua sự nghiêm ngặt mã hóa như vậy khi dòng mã đơn sau đây thay thế mọi thứ bạn đã thêm vào hành động Run AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of input
Đây là một ví dụ tối thiểu để thay thế mọi thứ trong mã AppleScript hiện tại của bạn: paste.ee/p/XngKA
if
khối câu lệnh có thể được mở rộng với else
mệnh đề hiển thị thông báo rằng tệp được chọn không phải là tệp .scpt. Bằng cách đó, người dùng sẽ không tự hỏi tại sao không có gì xảy ra nếu họ không thấy họ vô tình chọn sai loại tệp khi dịch vụ được chạy.