批处理删除过期文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理删除过期文件相关的知识,希望对你有一定的参考价值。

利用批处理删除系统近期所有盘文件!在2010年1月4日-2010年1月20日之前创建的文件通通删除,(也就是说时间一过)就删除所创建的文件!2010年1月4日之前的文件不用删除.代码不能有失误,若有误删我找谁负责?
唉。。其实我电脑中了流氓软件的病毒~需要做个P把今晚所创建的文件通通删除,急需啊。。我还不会这个,没时间搞啦,电脑快卡死了!!!删了注册表里的一些启动项后电脑是比以前快了点,现在还是卡,不知道注册表启动项有哪些新建的项目,不敢删啊!!! 利用个P删除后顺便学习学习! 不用杀毒,查不到的,只用把当天时间创建的文件清理一下就ok了(包括注册表等...)

@echo off& mode con cols=55 lines=15& color 0e
set wind_Begin=4& set wind_End=20& echo 正在搜索...
for %%1 in ("删除失败.txt" "删除成功.txt")do set %%1=%%1& erase "%%~1" 2>nul
set %~NX0=%~NX0
for /l %%1 in (%wind_Begin% 1 %wind_End%)do (set smile=0%%1&& call set 2010-01-%%smile:~-2%%=smile)
for /f "skip=1" %%X in ('wmic logicaldisk where "drivetype=3" get name')do for /f "delims=" %%9 in ('dir /s /b /a:-d %%X\ 2^>nul')do (if not defined %%~NX9 (
for /f "tokens=1-3*" %%1 in ('dir /t:c "%%~F9" 2^>nul')do (if defined %%1 (cls
set /a snow+=1&& call echo 已统计到%%snow%%个文件&& echo 正在处理: %%~F9
erase /a /f "%%~F9" 1>nul 2>nul& if exist "%%~F9" (set /a snow_F+=1&& echo %%1 %%~F9>>删除失败.txt)else echo %%1 %%~F9>>删除成功.txt))))
cls& echo 已统计到%snow%个文件
(if defined snow_F (echo 其中%snow_F%个文件无法删除
echo 请确定文件是否设置了权限& echo 或者有其他程序在使用文件
pause 1>nul& exit))& pause 1>nul

说实话,出于风险问题,测试时是把删除命令换成 echo 的
测试没有问题,理论上 真正执行删除命令也不会误删
参考技术A :: DateDel2.bat - 删除指定路径下指定日数以前修改的文件
:: Will Sort - 2005-9-2 - CMD@WinXP
:: 注意事项:参数%1指定日数,昨天为1,前天为2,依次类推
:: 参数%1指定文件路径,省略时将处理当前路径
:: 核心算法:Ritchie Lawrence, updated 2002-08-13. Version 1.1
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=16676

@echo off & setlocal ENABLEEXTENSIONS
call :Date2Day %date:~0,10% sdays
set /a sdays-=%1
call :Day2Date %sdays% difdate
echo 将删除 %cd% 下 %difdate% 前的修改的以下文件:
for /r %2 %%f in (*.*) do if "%%~tf" LEQ "%difdate%" echo "%%f"
goto :EOF

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
set yy=%%a & set mm=%%b & set dd=%%c
)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF
参考技术B 原来如此,批处理杀毒效果不大,在安全模式下杀毒,一回到正常模式还是会活过来。现在的病毒几乎都是蠕虫,所以建议安装杀毒软件,用360+小红伞的组合还不错。

Redis缓存过期处理与内存淘汰机制

Redis对已过期的key如何处理?

设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略。

redis有两种策略:

(主动)定时删除

定时随机的检查过期的key,如果过期则清理删除。(每秒检查次数在redis.conf中的hz配置)

(被动)惰性删除

当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil。这种策略对cpu比较友好,不会有太多的损耗,但是内存占用会比较高。

所以,虽然key过期了,但是只要没有被redis清理,那么其实内存还是会被占用着的。

那么如果内存被Redis缓存占用慢了咋办?

内存占满了,可以使用硬盘,来保存,但是没意义,因为硬盘没有内存快,会影响redis性能。

所以,当内存占用满了以后,redis提供了一套缓存淘汰机制:MEMORY MANAGEMENT

maxmemory:当内存已使用率到达,则开始清理缓存

* noeviction:旧缓存永不过期,新缓存设置不了,返回错误

* allkeys-lru:清除最少用的旧缓存,然后保存新的缓存(推荐使用)

* allkeys-random:在所有的缓存中随机删除(不推荐)

* volatile-lru:在那些设置了expire过期时间的缓存中,清除最少用的旧缓存,然后保存新的缓存

* volatile-random:在那些设置了expire过期时间的缓存中,随机删除缓存

* volatile-ttl:在那些设置了expire过期时间的缓存中,删除即将过期的

以上是关于批处理删除过期文件的主要内容,如果未能解决你的问题,请参考以下文章

forfiles命令批处理删除过期文件

让系统自动删除过期文件

怎样利用批处理自动删除某路径下的过期文件夹

BigQuery 错误:目标在执行期间已删除/过期

定时删除指定目录的过期文件(linux)

Redis的key过期处理策略