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