MS Dos Batch delete old files in directory [duplicate]

夙愿已清 提交于 2019-11-27 07:05:45

问题


Possible Duplicate:
Batch file to delete files older than N days

I'm trying to make a DoS Batch file to go through a directory with about 500,000 files in it, and i would like it to delete all the files older then 1 year

Here's my code so far

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

So far it loops and prints out all the files in the specified directory.

Any tips/help is highly appreciated.


回答1:


The Batch file below must be called with the number of days for old files to remove from today. For example, use 365 to remove 1 year old files.

@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

If your %date% format is not MM/DD/YYYY, reorder mm, dd and yy variables in the first line of :DateToJDN subroutine.



来源:https://stackoverflow.com/questions/9746778/ms-dos-batch-delete-old-files-in-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!