Board logo

标题: 判断文件日期以便根据条件判断方便删除? [打印本页]

作者: leiyc     时间: 2008-7-28 17:24    标题: 判断文件日期以便根据条件判断方便删除?

现有一需求,硬盘存有一定的文件,日积月累,就得很多了,哪位高手能否来一个P处理,运行后
1、自动扫描指定目录内的文件—>2、根据设定的日期(可以一开始就在代码中写死),判断年月日日期形式—>3、将符合条件的文件删除
就这样子而已,谢谢!辛苦一下各路高手

比如说:
----------------------------
isoemu                                                                2 KB   配置设置                       2004-11-09 22:40
isogrub                                                       6,880 KB   WinImage ISO                2008-03-11 21:55
bootfont                                                         316 KB   BIN File                           2008-03-18 06:00
NTDETECT                                                        47 KB   应用程序                       2008-03-18 06:00
ntldr                                                                300 KB   系统文件                       2008-03-18 06:00
BOOTSECT                                                         1 KB   DOS 文件                      2008-03-25 11:43
IO                                                                       0 KB   系统文件                       2008-03-25 12:03
MSDOS                                                               0 KB   系统文件                       2008-03-25 12:03
rising                                                                   1 KB   配置设置                       2008-03-25 17:04
boot                                                                    1 KB   配置设置                       2008-07-19 20:06
pagefile                                               1,548,288 KB   系统文件                       2008-07-28 09:04
-----------------------------------------
以上只有日期这部分是关建的,让P判断
介于‘2008-07-19’与‘2008-03-18’之间的文件(2008-03-18~2008-07-19),然后将这些文件删除!
作者: abcd     时间: 2008-7-28 17:29
bootfont                                                         316 KB   BIN File                           2008-03-18 06:00
NTDETECT                                                        47 KB   应用程序                       2008-03-18 06:00
ntldr                                                                300 KB   系统文件                       2008-03-18 06:00
BOOTSECT                                                         1 KB   DOS 文件                      2008-03-25 11:43
IO                                                                       0 KB   系统文件                       2008-03-25 12:03
MSDOS  

这几个文件,如果在系统分区的根目录下的话,是有用的。不能删。
作者: HAT     时间: 2008-7-28 17:41
CODE:  [Copy to clipboard]
@echo off
set DateB=2008-07-19
set DateE=2008-03-18
setlocal enabledelayedexpansion
for %%a in ("C:\test\*.*") do (
  set t=%%~ta
  set FileDate=!t:~0,10!
  if !FileDate! geq %DateB% (
    if !FileDate! leq %DateE% (
      del /q "%%a"
    )
  )
)

作者: leiyc     时间: 2008-7-28 17:48
我只是举个例子,不是要删那些文件啊
作者: leiyc     时间: 2008-7-28 17:52


  Quote:
Originally posted by HAT at 2008-7-28 05:41 PM:
[code]@echo off
set DateB=2008-07-19
set DateE=2008-03-18
setlocal enabledelayedexpansion
for %%a in ("C:\test\*.*") do (
  set t=%%~ta
  set FileDate=!t:~0,10!
  if !FileDate! geq ...

没有删除哦,我改过日期了
作者: HAT     时间: 2008-7-28 20:09
把你的代码贴出来看看?
作者: leiyc     时间: 2008-7-28 21:33


  Quote:
Originally posted by HAT at 2008-7-28 08:09 PM:
把你的代码贴出来看看?

@echo off
set DateB=2008-07-28
set DateE=2008-07-25
setlocal enabledelayedexpansion
for %%a in ("d:\ccclient\send\*.*") do (
  set t=%%~ta
  set FileDate=!t:~0,10!
  if !FileDate! geq %DateB% (
    if !FileDate! leq %DateE% (
      del /q "%%a"
    )
  )
)
作者: HAT     时间: 2008-7-28 21:40
把@echo off删除,开始,运行,cmd,test.bat
结果贴出来看看
作者: a794685135     时间: 2008-7-28 22:41
C:\test>set DateB=2008-07-28

C:\test>set DateE=2008-03-28

C:\test>setlocal enabledelayedexpansion

C:\test>for %a in ("C:\test\*.*") do (
set t=%~ta
set FileDate=!t:~0,10!
if !FileDate! GEQ 2008-07-28 (if !FileDate! LEQ 2008-03-28 (del /q "%a" ) )
)

C:\test>(
set t=2008-07-28 22:29
set FileDate=!t:~0,10!
if !FileDate! GEQ 2008-07-28 (if !FileDate! LEQ 2008-03-28 (del /q "C:\test\tex
t1.bat" ) )
)
作者: a794685135     时间: 2008-7-28 22:45
有问题 :
1.只删除了文件
2.只删除了设定的文件夹当前目录下面的文件,下一级目录里面的文件没有删除
作者: a794685135     时间: 2008-7-28 22:54
CODE:  [Copy to clipboard]
@echo off
set DateB=2008-07-28
set DateE=2008-07-28
setlocal enabledelayedexpansion
for /r "C:\test\" %%a in (.) do (
  set t=%%~ta
  set FileDate=!t:~0,10!
  if !FileDate! geq %DateB% (
    if !FileDate! leq %DateE% (
      del /q "%%a"
    )
  )
)
删除了下级目录下面的文件,只是对于文件夹的处理还是不知道
作者: a794685135     时间: 2008-7-28 23:07


  Quote:
Originally posted by a794685135 at 2008-7-28 10:54 PM:
[code]
@echo off
set DateB=2008-07-28
set DateE=2008-07-28
setlocal enabledelayedexpansion
for /r "C:\test\" %%a in (.) do (
  set t=%%~ta
  set FileDate=!t:~0,10!
  if !FileDate! ...

不行不行 ,, 郁闷
作者: HAT     时间: 2008-7-29 00:10
1、楼主没有要求删文件夹
2、楼主没有要求处理子目录的文件
作者: terse     时间: 2008-7-29 02:44
CODE:  [Copy to clipboard]
@echo off
for /r %%i in (*.*) do (
if not "%%i"=="%~0" (
if %%~ti geq 2008-03-18 if %%~ti leq 2008-07-28 echo del "%%i" /a/q/f>nul 2>nul
))
pause

作者: leiyc     时间: 2008-7-29 07:21


  Quote:
Originally posted by terse at 2008-7-29 02:44 AM:
[code]
@echo off
for /r %%i in (*.*) do (
if not "%%i"=="%~0" (
if %%~ti geq 2008-03-18 if %%~ti leq 2008-07-28 echo del "%%i" /a/q/f>nul 2>nul
))
pause
[ ...

没有达到效果,为什么我测试的都不行呢?
作者: terse     时间: 2008-7-29 10:23
去掉最后一行 del 前面的 echo 撒
作者: HAT     时间: 2008-7-29 12:50
Q: 为什么不行啊?
A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。




欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) Powered by Discuz! 2.5