Thực thi applescript mà không cần mở trình soạn thảo


12

Mỗi khi tôi muốn chạy một applescript, trình soạn thảo sẽ bật lên.

Có cách nào để chạy nó trực tiếp?

Câu trả lời:


19

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.

văn bản liên kết


Bây giờ nó sẽ nhắc: "Nhấn run để chạy hoặc thoát để thoát" ... nhưng tôi đoán đó là lỗi script! Cảm ơn bạn
OscarRyz

1
Chọn hộp kiểm chạy có thể ngăn lời nhắc xuất hiện.
Bruce McLeod

Tôi hiểu rằng hộp kiểm Chỉ chạy không cho phép chỉnh sửa tập lệnh sau này.
jtbandes

@jtbandes ahhhh ... điều đó có ý nghĩa
Bruce McLeod

2
Xin lưu ý rằng trong Yosemite, phương pháp hiện tại là sử dụng Tệp -> Xuất. Không còn đối thoại Save As trong phiên bản mới nhất của trình soạn thảo AppleScript.
anon58192932

7

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 osascriptlệnh trong Terminal, dưới dạng osascript /path/to/scripthoặc osascript -e "a short script here".


1

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.


1

Trong macOS High Sierra 10.13 không có Tệp / Lưu dưới dạng.

Bạn phải sử dụng Tệp / Xuất / Định dạng tệp: Ứng dụng Xuất tệp Định dạng tệp


0

Một cách khác là tạo một Dịch vụ trong Automator sử dụng osascriptlệ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)

  1. Khởi động máy tự động
  2. Tệp> Mới và chọn Dịch vụ
  3. Trong "Chấp nhận dịch vụ:" chọn "Tệp hoặc thư mục"
  4. Trong "Vị trí:" chọn "Finder.app"
  5. Tìm kiếm "Chạy AppleScript" và kéo mục sang bên phải
  6. 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
    
  7. Tệp> Lưu và đặt tên như "Chạy AppleScript"

  8. 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


Tôi thấy vấn đề với mã AppleScript của bạn. 1. Bạn không có xử lý lỗi hoặc mã để xác thực những gì đã chọn là tệp .scpt trước khi nó được chuyển đến osascriptvà 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
user3439894 7/12/17

Trong ví dụ tối thiểu, ifkhối câu lệnh có thể được mở rộng với elsemệ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.
dùng3439894
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.