MS Dos批量删除目录中的旧文件

时间:2012-03-17 02:38:25

标签: batch-file dos delete-file

  

可能重复:
  Batch file to delete files older than N days

我正在尝试制作一个DoS批处理文件来浏览一个包含大约500,000个文件的目录,我希望它能删除所有早于1年的文件

到目前为止,这是我的代码

@echo off
title File Exclusion Act
for /f "usebackq delims=|" %%f in (`dir /b "C:\Users\Travis\Desktop\LotsOfFiles"`) do echo %%f
pause

到目前为止,它循环并打印出指定目录中的所有文件。

非常感谢任何提示/帮助。

1 个答案:

答案 0 :(得分:3)

必须使用旧文件从今天删除的天数调用下面的批处理文件。例如,使用365删除1年前的文件。

@echo off
setlocal EnableDelayedExpansion
call :DateToJDN %date% oldDate= -%1
for /F "skip=5 tokens=1-4*" %%a in ('dir /A:-D /O:D') do (
   call :DateToJDN %%a fileDate=
   if !fileDate! lss %oldDate% (
      del "%%e"
   ) else (
      goto :EOF
   )
)
goto :EOF

:DateToJDN Date JDN= [+-days]
for /F "tokens=1-3 delims=/" %%x in ("%1") do set /A mm=10%%x %% 100, dd=10%%y %% 100, yy=%%z
if %mm% lss 3 set /A mm+=12, yy-=1
set /A a=yy/100, b=a/4, c=2-a+b, e=36525*(yy+4716)/100, f=306*(mm+1)/10, %2=C+DD+E+F-1524%3
exit /B

如果您的%date%格式不是MM / DD / YYYY,请在第一行:DateToJDN子例程中重新排序mm,dd和yy变量。