MS Dos Batch删除目录中的旧文件[重复]
Posted
技术标签:
【中文标题】MS Dos Batch删除目录中的旧文件[重复]【英文标题】:MS Dos Batch delete old files in directory [duplicate] 【发布时间】: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
到目前为止,它循环并打印出指定目录中的所有文件。
非常感谢任何提示/帮助。
【问题讨论】:
请看这个帖子***.com/questions/51054/… @Art:我查看了那个线程,以及它在所有级别中提到的所有线程,并且刚刚找到了一个(不是很有效)基于 DOS 批处理的解决方案,它不使用 FORFILES... 【参考方案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%
以上是关于MS Dos Batch删除目录中的旧文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章