2015-10-15 50 views
1

我是一個非常新手而且不常見的applescript實驗者。我已經嘗試了幾個小時來學習以下任務的單個applescript命令,但我總是遇到錯誤。也許更熟悉applescript的人會發現這項任務簡單快捷,爲此我將非常感激。這是任務:對Finder中選定的文件執行shell命令

我希望能夠在查找器中手動選擇文檔或文件,然後在該文件上執行以下unix命令。然後,我會將該腳本存儲在Finder的「服務」菜單下。 UNIX命令是:

srm -rfv -m path/filename 

在我的努力,我認爲這將打開終端,並執行該命令將要走的路,但就是無法得到任何工作的腳本。預先感謝任何能夠爲我推出這樣的腳本的優秀程序員。

+0

使用v標誌指示srm是詳細的。你有計劃返回文字嗎? –

+0

總結:您正在創建一個與Finder集成的OS X服務:安全刪除文件的shell命令應該應用於Finder中當前選定的項目。 您可以在Automator中創建這樣的服務,甚至不需要涉及AppleScript,因爲[ShooTerKo's](http://stackoverflow.com/a/33172126/45375)有用的答案將演示。 – mklement0

回答

0

Craig的評論是相關的,但我只關注腳本本身,而不是shell命令。腳本波紋管必須保存爲應用程序,並在每次它的圖標拖放1個或多個文件時,shell腳本命令將每個文件執行:

on open myFiles 
repeat with aFile in myFiles -- repeat loop in case you drop more than 1 file on the icon script 
try 
do shell script "srm -rfv -m " & (quoted form of POSIX path of aFile) 
end try 
end repeat 
end open 

還是確保在你的shell命令「SRM - rvv','v'是必要的,因爲這個腳本不會顯示任何東西!我不這麼認爲。也刪除過程中我沒有顯示錯誤。你想做什麼與錯誤(如寫保護,...)?

1

更新:我錯過了OP想要創建一個與Finder集成的OS X服務。 ShooTerKo's答案顯示如何做到這一點(他的解決方案甚至不需要使用AppleScript)。

這個答案唯一可能有趣的地方是它演示了AppleScript命令打開文件選擇對話框,獲取所選文件的POSIX路徑並運行shell命令,以及一些關於執行shell命令的一般背景信息do shell script


嘗試以下操作:

# Let the user choose a file via an interactive dialog. 
set fileChosen to choose file 

# Get the file's POSIX path. 
set filePath to POSIX path of fileChosen 

# Use the path to synthesize a shell command and execute it. 
do shell script "echo srm -rfv -m " & quoted form of filePath 

注:

  • 有沒有明確的錯誤處理;如果您不希望腳本失敗,則必須添加錯誤處理(try ... on error ... end try)以處理用戶取消文件選擇和shell命令失敗的情況(在這種情況下不太可能)。

  • shell命令前加echo以執行空運行(請參閱其在腳本編輯器的結果窗格中的輸出);刪除它來執行實際刪除。

  • quoted form of是確保的字符串值被包括原樣在一個外殼命令(由shell沒有膨脹(以危險))重要。

  • do shell script將不會打開一個終端窗口 - 它只會隱藏運行 shell命令並返回它的標準輸出的輸出,這通常是你想要的。如果shell命令通過非零退出代碼發出失敗信號,則會引發錯誤。

+1

好答案 - 請投我的票。如果OP想讓事情變得更加靈活一些,可以看一下@jweaks優秀的答案http://stackoverflow.com/a/33088853/2836621,它允許腳本通過啓動和選擇文件來運行,或者通過在Finder中選擇一堆文件並將其放到腳本中。 –

+0

謝謝,@MarkSetchell。鏈接的腳本很有趣,但是在重讀這個問題時,我注意到OP真正需要的是一個與Finder直接集成的OSX服務,這就是ShooTerKo的答案所描述的,所以我在那裏指出了我的答案。 – mklement0

+0

謝謝大家的寶貴意見。我將逐個嘗試這些建議,開始理解所有相關的弱點和好處。 – Arty14

2

我的提示:使用Automator創建這樣的服務!

  1. 在Automator中
  2. 創建新的服務
  3. 選擇「文件&文件夾」作爲輸入,「發現者」
  4. 添加「運行shell腳本」
  5. 選擇「作爲參數」輸入
  6. 變化echo "$f"你的指揮srm -rfv -m "$f"
  7. 另存爲 「安全刪除」

從現在開始,如果您在Finder中選擇了一個文件,您將在上下文菜單中找到「安全刪除」選項。

Enjoy,Michael/Hamburg

+0

幹得好;聽起來像這正是OP正在尋找的東西。 – mklement0

+0

Michael - 您的回覆非常有幫助。我很感謝簡單性和您的建議,我可能會將該命令保存在Finder上下文菜單中而不是服務菜單中。我很感謝你的幫助......謝謝! – Arty14

+0

@ Arty14:實際上,該命令將顯示在_both_位置。 – mklement0