2014-10-26 290 views
0

我在這個小腳本的'DeleteFile'行中有時會出現'找不到文件'的錯誤: (我想當幾個客戶端同時打開腳本時)在現有文件上找不到'文件未找到'錯誤

if objFSO.FileExists(fileName) then 
    Set f = objFSO.GetFile(fileName) 
    if DateDiff("d", f.DateLastModified, date()) > 3 then 
     Application.Lock 
     objFSO.DeleteFile(fileName) 
     Application.Unlock 
    end if 
    Set f = nothing 
end if 

但是這應該受到第一行'FileExists'的保護? 有什麼想法?謝謝。

+0

什麼是'Application.Lock'和'Application.Unlock'語句?你沒有在代碼中對應用程序變量做任何事情,所以他們沒有意義? – Lankymart 2014-10-27 05:10:50

回答

2

您正遇到競賽狀況。文件屬性緩存在GetFile的第二行。如果該文件存在,該代碼將繼續運行。您需要在該點之前鎖定,或刷新屬性緩存並在Application.Lock後仔細檢查存在。

+0

好像你可以使用鎖來包裝你的if語句,而不是將它們嵌入到if語句中。 – Dee 2014-10-27 03:37:43

+0

@Dee「鎖」沒有意義,因爲沒有應用程序變量被操縱。讓他們在那裏什麼都不做,並且不會**停止OP正在經歷的行爲。 – Lankymart 2014-10-27 05:14:44

+0

謝謝,我認爲這是一個這樣的問題,但不知道... – Chrigou 2014-10-27 09:44:27