2013-11-15 69 views
1

假設我有多個要刪除的文件,並且它們在files.txt文件中每行存儲一個。我可以用蘋果刪除多個文件

set deleteThis to paragraphs of (read "files.txt") 

repeat with lineFromFile in deleteThis 
    set fileName to POSIX file lineFromFile 
    tell application "Finder" to delete file fileName 
end repeat 

刪除這是邏輯你平時在網上找到 - 逐個刪除它們之一,但不是唯一的這是否擰你的「放回」選項(你必須ž多次),它也連續播放垃圾音。

有沒有辦法一次刪除多個文件,說通過將它們存儲在一個數組中並刪除?

編輯

通過@adayzdone答案是迄今爲止最好的,但它在目錄

回答

0

是,搜索將採取的路徑列表作爲參數傳遞給delete命令失敗。

set deleteThis to paragraphs of (read "files.txt") 

repeat with i from 1 to (count deleteThis) 
    set item i of deleteThis to POSIX file (item i of deleteThis) 
end repeat 

tell application "Finder" 
    delete deleteThis 
end tell 

另外,如果你能來存儲文件路徑爲HFS路徑,而不是POSIX的路徑,你可以跳過脅迫:

set deleteThis to paragraphs of (read "files.txt") 

tell application "Finder" 
    delete deleteThis 
end tell 
+0

不起作用。它給我一個錯誤,就是將deleteThis的set item i設置爲POSIX文件(deleteThis的item i)',說明'error'無法獲得POSIX文件\「\」。「編號-1728來自POSIX文件「」' – user137369

+0

聽起來就像在文本文件中有一個尾隨的空行。您可能需要在重複循環中執行一些清理操作,以確保只獲取有效的文件路徑。 –

0
tell application "Finder" 
    set file_list to entire contents of (choose folder with prompt "Please select directory.") 
    move file_list to trash 
end tell 
+0

這假定我想刪除特定目錄內的所有文件,但情況並非如此。我想刪除列表中指定的文件。 – user137369

+0

您可以創建file_list。上面的代碼是將file_list移動​​到垃圾箱的示例 –

+0

但是,這只是說「是的,你可以做你的建議」。我期待着如何實現它。 – user137369

2

嘗試:

set deleteThis to paragraphs of (read "files.txt" as «class utf8») 
    set deleteList to {} 

    tell application "Finder" 
    repeat with aPath in deleteThis 
     try 
      set end of deleteList to (file aPath) 
     on error 
      try 
       set end of deleteList to (folder aPath) 
      end try 
     end try 
    end repeat 

    delete deleteList 
end tell 
+0

雖然它似乎只適用於名稱僅包含ascii字符的文件。你知道如何解決這個問題嗎? – user137369

+0

你是否嘗試過從shell使用cat命令? – adayzdone

+0

如果你想引用非ASCII文件名的文件,你需要確保files.txt是UTF8編碼的。 – Mark