精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   【原创】批量删除文件修改时间为n天前的文件 (https://bbs.et8.net/bbs/showthread.php?t=655234)

hitme 2005-04-30 19:39:41

【原创】批量删除文件修改时间为n天前的文件
 
1 个附件
copy自yesterday.vbs
搞不明白如何将vbs变量传递给cmd变量,算了,用for...('cscript.exe..)..来取了

用法:cmd下

del_day 5

删除文件修改时间为5天前的文件,测试,删除操作务必谨慎
代码:

@echo off

>t_day.vbs  echo ' Yesterday.vbs,  Version 1.01                         
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Written by Rob van der Woude                       
>>t_day.vbs echo ' http://www.robvanderwoude.com                       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Calculate yesterday's date                         
>>t_day.vbs echo    dtmYesterday = DateAdd("d",-%1,Date)             
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's year                               
>>t_day.vbs echo    strYear      = DatePart("yyyy",dtmYesterday)       
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Get yesterday's month, add leading zero if necessary
>>t_day.vbs echo    If DatePart("m",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo            strMonth = 0 ^& DatePart("m",dtmYesterday)     
>>t_day.vbs echo    Else                                               
>>t_day.vbs echo            strMonth = DatePart("m",dtmYesterday)         
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                     
>>t_day.vbs echo ' Get yesterday's day, add leading zero if necessary 
>>t_day.vbs echo    If DatePart("d",dtmYesterday) ^< 10 Then           
>>t_day.vbs echo          strDay = 0 ^& DatePart("d",dtmYesterday)       
>>t_day.vbs echo    Else                                             
>>t_day.vbs echo          strDay = DatePart("d",dtmYesterday)           
>>t_day.vbs echo    End If                                             
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' Format output for yesterday                         
>>t_day.vbs echo  strYest = strYear ^& strMonth ^& strDay           
>>t_day.vbs echo '                                                   
>>t_day.vbs echo ' echo                                               
>>t_day.vbs echo Wscript.echo( strYest )                               

@echo on
for /f "delims=" %%i in ('cscript.exe //nologo t_day.vbs') do set t_day=%%i
setlocal ENABLEDELAYEDEXPANSION
for /r %%i in (*.*) do set c_day=%%~ti && if "!c_day:~0,2!!c_day:~3,2!!c_day:~6,2!" lss "%t_day:~2,6%" del /q "%%i"
endlocal
cls
@echo =========================
@echo 删除完毕.
@echo =========================


jiuk2k 2005-04-30 22:20:57

强,收藏以备后用!

小问题,所谓文件修改时间为n天前的文件,是指什么?如果是n天前创建的文件一直未修改呢?

jiuk2k 2005-04-30 22:32:38

刚看了一下,TC好像也可以

search->plugin tab->search in plugins

tc--creationdata--<=04/23/2005
tc--writedata-->04/23/2005
tc--writedata--<=04/24/2005

hitme 2005-05-01 13:13:24

引用:

作者: jiuk2k
强,收藏以备后用!

小问题,所谓文件修改时间为n天前的文件,是指什么?如果是n天前创建的文件一直未修改呢?

最后一次写入的时间
如一直未修改,创建时间=修改时间

hitme 2005-05-01 13:22:07

引用:

作者: jiuk2k
刚看了一下,TC好像也可以

search->plugin tab->search in plugins

tc--creationdata--<=04/23/2005
tc--writedata-->04/23/2005
tc--writedata--<=04/24/2005

tc搜索在利用时间属性上还未强化
想知道xxx天前是几月几号。。tc没有明示
不利于自动化工作,嘿嘿 :cool:

不可以..就是不可以.. :blush; 再可以我要撞墙了

cnlab 2005-05-04 19:45:42

谢谢,我想扩展一下,可是VB一头污水啊。 :(
因为目录较多,且不同的目录特权不同。。有些目录是不管的,所以我试验了以后,觉得还是做一个定义文件,按定义文件的要求来删除。。

5free 2005-05-05 00:40:44

让 TouchPro 干这事不错

smallfrogs 2005-05-05 02:57:17

一直使用ACDSEE

cnlab 2005-05-05 14:07:30

请问这个yesterday.vbs是哪来的呀?俺vb实在不行,只好又装上DevCPP自已编一个了。

edwardj 2005-05-05 21:05:15

这么麻烦?
用 find 命令简单的狠。不过是 gnu find。在 Native Win32 ports of some GNU Utilities 包里

双脚离地 2005-05-06 06:55:04

经典,不过大家的回帖也给我启发很多。
此贴收藏

cnlab 2005-05-06 10:46:08

谢谢,太谢谢,

cnlab 2005-05-10 09:26:27

测试中发现新问题,
find D:\FTP\临时交流\文档 ! -mtime -25 -exec rm {} ;
find D:\FTP\临时交流\文档 ! -mtime -25 -exec rmdir {} ;
空目录删不去,因为删除文件时,目录的时间变了,结果就删不去,有没有专删空目录的命令?

hitme 2005-05-10 12:27:39

引用:

作者: cnlab
测试中发现新问题,
find D:\FTP\临时交流\文档 ! -mtime -25 -exec rm {} ;
find D:\FTP\临时交流\文档 ! -mtime -25 -exec rmdir {} ;
空目录删不去,因为删除文件时,目录的时间变了,结果就删不去,有没有专删空目录的命令?

空目录全删了?来遍


for /l %a in (1,1,9) do for /r %i in (.) do rd %~si

snowfall 2005-05-10 12:46:59

norton 里带一个修改文件和目录时间的小程序,也比较方便。


所有时间均为北京时间, 现在的时间是 22:34:51.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号