2014-10-01 30 views
0

我正在使用rake將我從一個文件夾接收的文件複製到兩個子文件夾。紅寶石無法刪除Windows後的cp文件

複製後,我嘗試從他們的原始文件夾中刪除這些文件。

我似乎無法刪除一些文件(通常只有1或2個5左右)。

當使用mv(而不是CLEAN)時,我收到一條拒絕訪問的錯誤消息。

我相信Windows(我的操作系統)仍然持有對文件的引用,因此不會刪除它們。

我可以從代碼中刪除文件沒問題。不應該有權限問題。

如果我的理論是正確的,仍然存在對文件開放的引用,那麼我如何關閉這些引用?

難道是別的嗎?

代碼:

DOCK  = '/path' 
NEW_FILES = DOCK + '/NewFiles' 

dock_stock = FileList.new(DOCK + '/*.xml') 

file target_path do |t| 
    unless dock_stock.empty? 
    mkdir t.name 
    dock_stock.each do |f| 
     target_new_files_folder = f.pathmap(NEW_FILES + '/%f') 

     mv f, target_new_files_folder 
    end 
    end 
end 

也應該注意這個任務是一個多任務(其實是一個依賴的依賴的依賴)的依賴。 task :clean => target_path就是其中之一。

所以也許問題是多線程相關或:clean任務。

+0

需要所有這些代碼來重現問題或者您也可以提供更短的例子嗎? – Stefan 2014-10-01 11:28:16

+0

我可以清除周圍的工作,我認爲這對他人有幫助。但我明白你的觀點。 – 2014-10-02 13:32:27

回答

0

似乎有一個McAfee Agent引用的文件不允許我刪除它們。

大多數情況下,如果我試圖在以後刪除它們,他們會刪除。

當我寫大部分時,我的意思是一次在藍色的月亮裏它可以保存文件數天,直到手動發佈。

解決方法是記錄有問題的文件並將它們從文件列表中排除,並嘗試在稍後刪除它們。

希望我有一個更好的解決方案。

0

窗戶delcommandf選項,它強制刪除。與/ q(uite)聯合和紅寶石運行例如exec

exec 'del /f /q filename'