2017-06-18 76 views
0

時,我有一個簡單的腳本來取物品倒垃圾,並把它們放回原來的目錄:AppleScript的處理對話把文件傳​​回垃圾桶

repeat 10 times 
    tell application "Finder" to open trash 
    tell application "Finder" to activate 
    tell application "System Events" 
     tell process "Finder" 
      delay 0.2 
      key code 125 
      key down command 
      delay 0.2 
      key code 51   
      key up command  
     end tell 
    end tell 
    delay 0.2 
    tell application "Finder" to close every window 
end repeat 

但運行此腳本拋出了一個異常 - 取景器彈出對話框,說文件已經存在於原始位置,有3個選項:'同時保留','停止'和'替換'。我希望腳本自動選擇'替換'。

任何想法?

回答

0

你要面對幾個問題:

文件的最後一個位置存儲垃圾.ds_store內。對於某些文件(如果原始文件夾被刪除),路徑將不會存在於該文件中,並且放回選項將不起作用(因此您的腳本不會) - 如果手動嘗試,您會在上下文菜單中看到它變灰。

然後按下按鈕的gui方法不會返回任何東西 - 所以你不能控制進一步的步驟,如覆蓋文件。

最好的方法是讀出原始位置,然後用覆蓋選項創建移動命令。

在另一個線程上有人寫了珍珠腳本來做到這一點:https://superuser.com/a/867988

運行腳本像

set ps to "posixpath/to/script.pl" 
set moveCommands to do shell script "perl " & quoted form of ps 

然後執行所有的移動命令與執行shell腳本像上面。最好的事情是你可以chsnge腳本添加選項,如不存在「mv -n」就不要覆蓋。我沒有測試通過它閱讀的腳本。您可以通過管道傳輸命令,以便在更少的步驟中完成所有操作。

請注意,這將適用於存在原始文件夾的文件。如果你有不同的情況,你需要調整它,使文件夾創建

0

這適用於我運行最新版本的OSX Sierra。您可能需要調整一些延遲設置爲您工作

tell application "Finder" 
    close every window 
    activate 
    open trash 
    select every item of trash 
    delay 1 
end tell 
tell application "System Events" 
    key code 51 using (command down) 
    delay 1 
    try 
     set theCheckbox to checkbox "Apply to All" of scroll area 1 of window "Copy" of application process "Finder" 
     set applyToAll to perform action "AXPress" of checkbox "Apply to All" of scroll area 1 of window "Copy" of application process "Finder" 
     set replaceButton to perform action "AXPress" of button "Replace" of scroll area 1 of window "Copy" of application process "Finder" 
     if theCheckbox exists then 
      delay 1 
      applyToAll 
      delay 1 
      replaceButton 
     else 
      key code 51 using (command down) 
     end if 
    end try 
end tell