2015-12-07 75 views
0

我希望腳本的所有文件(所有文件擴展名*.*)超過5分鐘從INN文件夾移動到和錯誤的文件夾。在我的例子C:\CopyFlow\Directory test\Inn\C:\CopyFlow\Directory test\Inn\Error將舊文件比x分鐘

所以我想通了如何移動文件以及如何尋找它後找到比X-時間舊文件。 Howover,把它放在一起對我來說是個問題。有誰知道我可以釘這個?

這是我走到這一步......

Dim age_threshold 
age_threshold = 5 
Dim folder_path 
folder_path = WScript.Arguments(0) 
Dim fso, f 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.getFolder(folder_path) 
Dim old_file_not_found 
old_file_found = 0 
For Each file in f.Files 
    Dim age 
    age = DateDiff("n", file.DateLastModified, Now) 
    If age > age_threshold Then 
    old_file_found = 1 
    .MoveFile "C:\CopyFlow\Directory test\Inn\*.*", "C:\CopyFlow\Directory test\Inn\Error" 
    Exit for 
    end if 
Next 
WScript.Quit 

我已經習慣了一批,所以這是一個有點希給我(來源http://www.evalesco.com/check-any-file-older-x-minutes-directory)。

現在在何處設置(有啥用?)我的客棧和錯誤文件夾中的這個腳本?而且我很確定if age其次是.movefile是錯誤的,所以我可能需要稍微糾正一下。

error_running_script

更新請告訴我在圖像中缺少的是在move.file線誤差(\error\)後反斜槓。

回答

2

你不能說沒有對象提供的方法的方法,所以.MoveFile應該是fso.MoveFile。但是,如果文件夾中的任何文件作爲參數傳遞給腳本的時間早於5分鐘,則腳本將以當前形式移動C:\CopyFlow\Directory test\Inn中的所有文件。

你需要做的是通過C:\test\inn作爲參數傳遞給腳本,並移動只有那些其實都是舊的文件:

If age > age_threshold Then 
    file.Move "C:\test\inn\error\" 
End If 
+0

感謝您的答覆。但是,由於我缺乏經驗,我遇到了一些問題。我想我需要將我的INN文件夾變暗。那會在這裏嗎? '設置f = fso.getFolder(「C:\ CopyFlow \ Directory test \ Inn」)' - 和f.move,我應該將inn和error文件夾都添加到該行嗎?就像這個'f.move'C:\ CopyFlow \ Directory test \ Inn \「」C:\ CopyFlow \ Directory test \ Inn \ Error「' – MadsTheMan

+1

如果您不想將文件夾作爲參數傳遞給腳本,可以像這樣定義它,是的。應該爲每個文件調用'Move'方法,就像我上面的(更新的)示例代碼一樣。 –

+0

非常感謝,這使得sence。我認爲它現在應該差不多完成了,但我在運行該文件時遇到了一個小問題,以測試它是否可行。 「預期在句子結尾」(直接翻譯)。我試過「退出」和「結束如果」,但它可能會更多我失蹤?它引用file.move中的字符串。 – MadsTheMan