2014-09-23 39 views
0

每次我打開這個特定的腳本,其他應用程序打開它,我甚至沒有點擊運行。應用程序如Appstore和系統信息打開,並且只在腳本中提及一次,中途:當我在applescript上打開某個腳本時,爲什麼其他應用程序打開?

tell application "Grab" to quit 
tell application "Network Utility" to quit 
tell application "System Information" to quit 
tell application "Terminal" to quit 
tell application "Keychain Access" to quit 
tell application "Disk Utility" to quit 
tell application "Bluetooth File Exchange" to quit 
tell application "Boot Camp Assistant" to quit 
tell application "AirPort Utility" to quit 
tell application "Activity Monitor" to quit 
tell application "App Store" to quit 
tell application "iTunes" to quit 

爲什麼會發生這種情況?

回答

3

當您在腳本編輯器中打開腳本時,它將打開所有必要的應用程序以加載其庫術語。它一直以這種方式運作。當你打開某個腳本來告訴你沒有安裝的應用程序塊時,特別煩人。

+0

哦好的,謝謝,這是很煩人但哦 – 2014-09-24 02:45:23

+0

我覺得很奇怪,打開腳本時,而不是當你「編譯」的腳本它這種行爲。 – jweaks 2014-09-24 02:46:32

+0

是真的,但幸運的是,它不會真的很煩人,因爲我編譯每次我輸入命令 – 2014-09-24 02:52:35

-1

如果該應用程序未運行,AppleScript將無法告訴應用程序執行某些操作。因此,如果一個腳本包含一個「tell」語句來定位特定的應用程序,那麼該應用程序必須與該腳本一起運行。這與在PHP腳本中調用PHP庫函數相同。如果您在PHP腳本中使用strpos函數,則該腳本無法在沒有運行strpos的情況下運行。

這是設計的原因,因爲AppleScript的目的是創建包含多個應用程序一起工作的特定任務的工作流程。 AppleScript本身幾乎沒有內置功能 - 您的AppleScript從Mac應用程序,Unix應用程序和網絡服務中獲得它們的功能。

在您正在使用的腳本中,如果您知道這些應用程序不會運行,那麼您可以註釋掉這些行(在每行的前面放置兩個破折號),因爲它所做的只是告訴那些人應用程序退出。 AppleScript並未將這些應用程序用於任何實際功能。

+0

感謝詳細描述它爲什麼打開。雖然在腳本的那部分之前,他們被打開了,我只是不想發佈整個腳本,因爲它太長了。 我是一個新手,仍然在applescript:P所以當你說註釋掉這條線(例如 - 應用程序「ITunes」退出)時,它不會更好,只是離開它然後與其他命令,因爲它沒有任何「功能」。 – 2014-09-24 08:27:54

+0

請注意,操作系統詢問爲什麼打開該腳本時應用程序打開。您的描述實際上是關於運行時。您可以輸入tell blocks,編輯並在編輯時繼續前進,直到運行時才能打開應用程序。 – jweaks 2014-09-24 21:56:57

+0

好吧,我每天都會學到新的東西:) – 2014-09-25 03:17:41

0

這並不回答這個問題,因爲你已經有了答案。

但是,當您想要編輯腳本時,以下是如何不打開這些應用程序。 只需將應用程序名稱放入一個變量中即可。

set appNames to {"Grab", "Network Utility", "System Information", "Terminal", "Keychain Access", "Disk Utility", "Bluetooth File Exchange", "Boot Camp Assistant", "AirPort Utility", "Activity Monitor", "App Store", "iTunes"} 
repeat with tName in appNames 
    quit application tName 
end repeat 
+0

好吧,謝謝你的代碼 – 2014-09-25 03:16:49

相關問題