เรียกใช้แอปเปิ้ลโดยไม่ต้องเปิดโปรแกรมแก้ไข


12

ทุกครั้งที่ฉันต้องการเรียกใช้ applescript บรรณาธิการจะปรากฏขึ้น

มีวิธีเรียกใช้โดยตรงหรือไม่

คำตอบ:


19

วิธีบันทึกสคริปต์มีผลอย่างมากต่อการทำงานใน Mac OS X ดูเหมือนว่าสคริปต์ของคุณจะถูกบันทึกเป็นสคริปต์และนั่นคือสิ่งที่ทำให้ตัวแก้ไขสคริปต์เปิดทุกครั้งที่คุณเปิดสคริปต์

เพื่อแก้ปัญหาให้เปิดสคริปต์ในตัวแก้ไข AppleScript และบันทึกเป็นแอปพลิเคชัน ที่ควรทำเพื่อหลอกลวง

ขั้นตอนคือ (ในตัวแก้ไข)

ไฟล์> บันทึกเป็น> จากนั้นตั้งค่ารูปแบบไฟล์เป็นแอปพลิเคชันจากนั้นบันทึก

ข้อความลิงก์


ตอนนี้มันแจ้งให้: "กดเรียกใช้เพื่อเรียกใช้หรือออกจากเพื่อเลิก" ... แต่ฉันเดาว่านั่นเป็นความผิดของสคริปต์! ขอบคุณ
OscarRyz

1
การทำเครื่องหมายในช่องทำเครื่องหมายอาจหยุดไม่ให้ปรากฏ
บรูซ McLeod

ความเข้าใจของฉันคือช่องทำเครื่องหมายเรียกใช้อย่างเดียวไม่อนุญาตให้แก้ไขสคริปต์ในภายหลัง
jtbandes

@ jtbandes ahhhh ... ที่ทำให้ความรู้สึก
บรูซ McLeod

2
โปรดทราบว่าใน Yosemite วิธีปัจจุบันคือการใช้ไฟล์ -> ส่งออก ไม่มีกล่องโต้ตอบบันทึกเป็นในตัวแก้ไข AppleScript รุ่นล่าสุด
anon58192932

7

เมื่อบันทึกสคริปต์คุณสามารถเลือก "แอปพลิเคชัน" จากดร็อปดาวน์รูปแบบไฟล์; จากนั้นคุณจะสามารถเรียกใช้และคุณจะยังสามารถลากไปยังตัวแก้ไขสคริปต์เพื่อเปิดสคริปต์ หรือคุณสามารถเลือก Run Only เพื่อไม่ให้บันทึกเวอร์ชันที่แก้ไขได้

หรือคุณสามารถใช้osascriptคำสั่งในเทอร์มิไม่ว่าจะเป็นหรือosascript /path/to/scriptosascript -e "a short script here"


1

คุณยังสามารถวางสคริปต์ในโฟลเดอร์ ~ / Library / Scripts / Finder / และเรียกใช้โดยตรงจากเมนูสคริปต์



0

อีกวิธีหนึ่งคือการสร้างบริการใน Automator ซึ่งใช้osascriptคำสั่งเพื่อเรียกใช้ .scpt ใน Finder

(ฉันไม่ได้ใช้ Automator เป็นภาษาอังกฤษดังนั้นข้อความอาจไม่ถูกต้อง)

  1. เรียกใช้ Automator
  2. ไฟล์> ใหม่แล้วเลือกบริการ
  3. ใน "บริการยอมรับ:" เลือก "ไฟล์หรือโฟลเดอร์"
  4. ใน "ตำแหน่ง:" เลือก "Finder.app"
  5. ค้นหา "เรียกใช้ AppleScript" แล้วลากรายการไปทางด้านขวา
  6. ในกล่องเรียกใช้ AppleScript ให้ป้อนรหัสต่อไปนี้:

    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. ไฟล์> บันทึกและตั้งชื่อเช่น "Run AppleScript"

  8. ตอนนี้คุณสามารถคลิกขวาที่ไฟล์. scpt ใน Finder และเลือก "Run AppleScript" แล้วดูสคริปต์ของคุณ

การอ้างอิง: แหล่งที่มาของรูทีนย่อย - AppleScript: Essential Sub-Routines


ฉันเห็นปัญหาเกี่ยวกับรหัส AppleScript ของคุณ 1. คุณไม่มีข้อผิดพลาดในการจัดการหรือรหัสเพื่อตรวจสอบสิ่งที่เลือกคือไฟล์. scpt ก่อนที่จะถูกส่งไปยังosascriptและไม่ได้เข้ารหัสเพื่อจัดการหากมีไฟล์. scpt มากกว่าหนึ่งไฟล์ใน Finder 2. ไม่จำเป็นต้องมีวิธีการเข้ารหัสที่ซับซ้อนเช่นนี้เมื่อโค้ดบรรทัดเดียวต่อไปนี้แทนที่ทุกสิ่งที่คุณเพิ่มลงในการดำเนินการ Run AppleScript do shell script "osascript " & quoted form of POSIX path of item 1 of inputนี่เป็นตัวอย่างเล็กน้อยที่จะแทนที่ทุกอย่างในรหัส AppleScript ปัจจุบันของคุณ: paste.ee/p/XngKA
user3439894

ในตัวอย่างที่น้อยที่สุดifบล็อกคำสั่งสามารถขยายได้ด้วยส่วนelseคำสั่งที่แสดงข้อความว่าไฟล์ที่เลือกไม่ใช่ไฟล์. scpt ด้วยวิธีนี้ผู้ใช้จะไม่ถูกทิ้งให้สงสัยว่าทำไมไม่มีอะไรเกิดขึ้นถ้าพวกเขาไม่เห็นว่าพวกเขาเลือกไฟล์ผิดประเภทโดยไม่ตั้งใจเมื่อใช้บริการ
user3439894
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.