我现在有一个看起来无害的要求放在.bat文件中,我是第一次处理批处理代码...在这里找到一个处理类似内容的页面 ,但它以修改后的日期为参考。
在特定的文件夹X中,通过解析文件名删除所有早于N天的文件。其中文件名格式为Name_YYYYMMDD.log
但是请注意:1.不想以上次修改日期作为参考(其他程序/应用可能已访问/修改了日志)2.没有安装其他实用程序的权限。
编辑:
谢谢!。
下面的批处理文件将文件日期转换为儒略日数,即连续的天数,并使用它来知道每一天的天数。参数中提供了删除文件的天数。
@echo off
setlocal EnableDelayedExpansion
rem Get Julian Day Number of today's date
rem The assumed format is MM/DD/YYYY, change C-A-B order in accordance with your locale
for /F "tokens=1-3 delims=/" %%a in ("%date%") do (
set todayDate=%%c%%a%%b
)
call :DateToJDN %todayDate% todayJDN=
for /F "tokens=1-3 delims=_." %%a in ('dir /B /A-D *.*') do (
call :DateToJDN %%b fileJDN=
set /A daysOld=todayJDN - fileJDN
if !daysOld! gtr %1 (
echo File "%%a_%%b.%%c" is !daysOld! days old
)
)
goto :EOF
:DateToJDN yyyymmdd jdn=
set yyyymmdd=%1
set /A yyyy=%yyyymmdd:~0,4%, mm=1%yyyymmdd:~4,2% %% 100, dd=1%yyyymmdd:~6% %% 100
set /A a=(mm-14)/12, %2=(1461*(yyyy+4800+a))/4+(367*(mm-2-12*a))/12-(3*((yyyy+4900+a)/100))/4+dd-32075
exit /B
Run Code Online (Sandbox Code Playgroud)
测试此程序,并echo File "%%a_%%b.%%c" ...根据需要更改命令del "%%a_%%b.%%c"。
参考:http://www.hermetic.ch/cal_stud/jdn.htm#comp
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |