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

Batch file MS Dos批量删除目录中的旧文件,batch-file,dos,delete-file,Batch File,Dos,Delete File,可能重复: 我正试图使一个DoS批处理文件通过一个目录,其中有大约500000个文件,我想它删除所有的文件超过1年 这是到目前为止我的代码 @echo off title File Exclusion Act for /f "usebackq delims=|" %%f in (`dir /b "C:\Users\Travis\Desktop\LotsOfFiles"`) do echo %%f pause 到目前为止,它循环并打印出指定目录中的所有文件 非常感谢您提供的任何提示/帮助。必须

可能重复:

我正试图使一个DoS批处理文件通过一个目录,其中有大约500000个文件,我想它删除所有的文件超过1年

这是到目前为止我的代码

@echo off
title File Exclusion Act
for /f "usebackq delims=|" %%f in (`dir /b "C:\Users\Travis\Desktop\LotsOfFiles"`) do echo %%f
pause
到目前为止,它循环并打印出指定目录中的所有文件


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

必须调用下面的批处理文件,并注明从今天起删除旧文件的天数。例如,使用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变量重新排序。

请查看此线程@Art:I查看了该线程,以及其中提到的所有线程的所有级别,刚刚发现一个(不是很有效)基于DOS批处理的解决方案,它不使用FORFILES…无法运行此程序。获取一个
缺少的操作数。命令的语法不正确。
at
if!文件日期!lss%oldDate%