当前位置: 代码迷 >> C# >> 求一段批处理删除5小时前文件的代码,该怎么处理
  详细解决方案

求一段批处理删除5小时前文件的代码,该怎么处理

热度:97   发布时间:2016-05-05 04:52:50.0
求一段批处理删除5小时前文件的代码
本帖最后由 cde32 于 2014-06-09 10:53:14 编辑
forfiles 命令只能删除若干天之前的文件,如:forfiles /p "D:\aaa" /d -2 /c "cmd /c del @path"
我想用批处理删除指定文件夹(如:"D:\aaa")内5小时前的文件,该怎么写?
------解决思路----------------------
@echo off 
rem cd /d f:\temp 
rem mDateTime格式: yyymmddHHmm 
set mDateTime=200608161907 
for /f "skip=4 tokens=1,2,3,4* delims=<>" %%i in ('dir /a /-c /tc /o-d') do call :proc %%i %%j %%k %%l 
goto end 

:proc 
set aDate=%1 
set aTime=%2 
set aType=%3 
set aFile=%4 
set aDatetime=%aDate:~0,4%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2% 
if /i "%aDateTime%" lss "%mDateTime%" (if NOT "%aType%"=="DIR" attrib "%aFile%" -r -h -s && del "%aFile%") 

:end 

支持到小时的,按照需要改改就好了。支持到分钟。。。。。就是for太长的问题是存在的,年份改成2位就好用了。
------解决思路----------------------
dim folder, file, mFSO, subfolder

Set mFSO = CreateObject("Scripting.FileSystemObject")
set folder=mFSO.GetFolder("D:\aaaa")
‘删除文件
dim df
For Each file In folder.files
    'df=DateDiff("h",file.DateCreated,Now)    '判断建立日期
    df=DateDiff("h",file.DateLastModified,Now)    '判断修改日期
    If (df>5) Then    '5小时前的文件
        'MsgBox folder.path & "\" & file.Name & vbTab & file.DateCreated
        MsgBox folder.path & "\" & file.Name & vbTab & file.DateLastModified
        file.Delete()
    End If
Next
‘删除文件夹
set subfolder = Folder.subFolders
For Each file In subfolder
    'df=DateDiff("h",file.DateCreated,Now)    '判断建立日期
    df=DateDiff("h",file.DateLastModified,Now)    '判断修改日期
    If (df>5) Then    '5小时前的文件
        mFSO.deleteFolder(folder.path & "\" & file.Name)
    end if
next
  相关解决方案