【问题标题】:MS Dos Batch delete old files in directory [duplicate]MS Dos Batch删除目录中的旧文件[重复]
【发布时间】:2012-03-17 02:38:24
【问题描述】:

可能重复:
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

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

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

【问题讨论】:

  • @Art:我查看了那个线程,以及它在所有级别中提到的所有线程,并且刚刚找到了一个(不是很有效)基于 DOS 批处理的解决方案,它不使用 FORFILES...

标签: batch-file dos delete-file


【解决方案1】:

必须使用从今天开始删除旧文件的天数调用下面的批处理文件。例如,使用 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 变量。

【讨论】:

  • 无法运行。获取Missing operand. The syntax of the command is incorrect.if !fileDate! lss %oldDate%
猜你喜欢
  • 2021-06-21
  • 2018-03-19
  • 1970-01-01
  • 2013-05-04
  • 2023-01-07
  • 2023-03-20
  • 2014-12-12
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多