VB脚本根据更改的日期移动文件

时间:2014-03-26 14:58:46

标签: file-io vbscript

我希望编写一个VB脚本来保持文件夹整理。规则是:

  • 检查今天是否有任何文件被更改
  • 如果今天至少更改了一个文件,请将2天前最后更改的所有文件移至另一个文件夹

这是我到目前为止所做的:

strFolder = "c:\testdelete"
objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
For Each objFile In colFiles
  If DateDiff("N",objFile.DateLastModified,Now()) > 4320 Then
    objFSO.DeleteFile(objFile),True  End if  Next

然而这不起作用。

2 个答案:

答案 0 :(得分:2)

中迭代文件夹中的文件
  • 构建至少2天前修改过的文件列表,
  • 检查文件今天是否被修改。

这样的事情应该有效:

Set fso = CreateObject("Scripting.FileSystemObject")

Set oldFiles = CreateObject("System.Collections.ArrayList")

today     = Date
threshold = Date - 1

fileModifiedToday = False
For Each f In fso.GetFolder("C:\some\folder").Files
  If f.DateLastModified >= today Then fileModifiedToday = True
  If f.DateLastModified < threshold Then oldFiles.Add f
Next

If fileModifiedToday Then
  For Each f In oldFiles
    f.Move "C:\other\folder\"
  Next
End If

答案 1 :(得分:0)

因此,要比较文件的日期和当前日期,您可以使用DateValue()函数,该函数仅返回DateTime变量的日期。然后,您可以使用类似objFSO.MoveFile(FileObject, DestinationFolder)

的MoveFile命令
Dim strFolder, Dest
On Error Resume Next 'Move to manual error handling. 
strFolder = "c:\testdelete"
Dest = "C:\testmove"
Dim objFSO, objFolder, colFiles, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder(strFolder)  
Set colFiles = objFolder.Files  
For Each objFile In colFiles  
  If DateValue(objFile.DateLastModified) = DateValue(Now) Then
    objFSO.MoveFile(objFile, Dest)
    if err.number <> 0 then msgbox "Destination does not exist"
    err.clear
  ElseIf DateDiff("N",objFile.DateLastModified,Now()) > 4320 Then       
    objFSO.DeleteFile(objFile,True)
    if err.number <> 0 then msgbox "Unable to delete file"
    err.clear
  End if  
Next