Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File io 基于更改日期移动文件的VB脚本_File Io_Vbscript - Fatal编程技术网

File io 基于更改日期移动文件的VB脚本

File io 基于更改日期移动文件的VB脚本,file-io,vbscript,File Io,Vbscript,我想写一个VB脚本来保持文件夹整洁。这些规则是: 检查今天是否更改了任何文件 如果今天至少更改了一个文件,请将上次更改的所有文件移到另一个文件夹中 这就是我到目前为止所做的: strFolder = "c:\testdelete" objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(strFolder) Set colFiles = objFolder.Files For E

我想写一个VB脚本来保持文件夹整洁。这些规则是:

  • 检查今天是否更改了任何文件
  • 如果今天至少更改了一个文件,请将上次更改的所有文件移到另一个文件夹中
这就是我到目前为止所做的:

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

但是,这不起作用。

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

Dim strFolder,Dest
错误恢复下一步“转到手动错误处理”。
strFolder=“c:\testdelete”
Dest=“C:\testmove”
Dim objFSO、objFolder、colFiles、objFile
设置objFSO=CreateObject(“Scripting.FileSystemObject”)
设置objFolder=objFSO.GetFolder(strFolder)
设置colFiles=objFolder.Files
对于colFiles中的每个objFile
如果DateValue(objFile.DateLastModified)=DateValue(现在),则
MoveFile(objFile,Dest)
如果错误号为0,则msgbox“目标不存在”
清楚
ElseIf DateDiff(“N”,objFile.DateLastModified,Now())>4320然后
DeleteFile(objFile,True)
如果错误号为0,则msgbox“无法删除文件”
清楚
如果结束
下一个

在运行时迭代文件夹中的文件

  • 建立至少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
Set fso=CreateObject(“Scripting.FileSystemObject”)
Set oldFiles=CreateObject(“System.Collections.ArrayList”)
今天=日期
阈值=日期-1
fileModifiedToday=False
对于fso.GetFolder(“C:\some\folder”).Files中的每个f
如果f.DateLastModified>=今天,则fileModifiedToday=True
如果f.DateLastModified<阈值,则oldFiles.Add f
下一个
如果文件今天修改了,那么
对于旧文件中的每个f
f、 移动“C:\other\folder\”
下一个
如果结束

添加任何代码都会很有帮助。问一个问题而不试图解决问题不是一个好政策:我的坏政策。这是我必须开始的。它将删除文件夹中早于指定日期的文件,但我不是VBS人员,只是刚刚开始
strFolder=“c:\testdelete”:Rem更改路径Set objFSO=CreateObject(“Scripting.FileSystemObject”)Set objFolder=objFSO.GetFolder(strFolder)Set colFiles=objFolder.Files如果DateDiff(“N”,objFile.datelastmedited,Now())>4320,则objFSO.DeleteFile(objFile),True End if Next
调试应用程序并查看是否相应地填充了值。您是否有任何错误,哪一行完全不符合您的期望。是不是
objFSO
colFiles
。逐行检查您第一次遇到问题的位置。上面的代码可以删除超过4320分钟的文件,但我需要包含一个条件,首先检查文件夹中是否有日期为“今天”的文件,然后将超过2天的文件移动到另一个文件夹。我不知道如何使用条件语句或正确的语法来移动文件和删除文件。非常感谢您的帮助。+1解决问题(不要玩弄OT的误导代码)、
=
f.Move
。一个问题:你能花一个变量作为volatile
Date
的变量,并在顶部附近初始化一次吗?+1 Ansgar,很酷的东西,我喜欢读你的代码,很有创意。“…玩弄OT的误导代码”-我更多地将其视为,根据他们的理解重新调整他们的代码,显然这些代码是从另一个位置复制和粘贴的,但是为什么要教他们重新发明轮子,而不仅仅是给他们下一步需要的步骤呢。我一直把它看作是辅助学习。各自为政:)
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