标题: 如何删除特定目录下50天以前建立的子目录
[打印本页]
作者: blljp
时间: 2008-6-1 12:40
标题: 如何删除特定目录下50天以前建立的子目录
如何删除特定目录下50天以前建立的子目录及其中的文件(彻底删除不放到回收站),拜托各位高手指导。
作者: blljp
时间: 2008-6-1 14:45
没有人知道吗?
作者: terse
时间: 2008-6-1 15:27
刚发一个判断文件的 现在又来个文件夹 修改一下看能用否?没测试
@echo off&SET TT=50
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
setlocal enabledelayedexpansion
for %%i in (p2 p3 t1 t2) do if !%%i! lss 10 set %%i=0!%%i!
for /f "tokens=*" %%i in ('dir /b /s /ad') do (
set "ta=%%~ti"
if "!ta:~0,4!!ta:~5,2!!ta:~8,2!" leq "!p1!!p2!!p3!" rd /s /q "%%~fi" 2>nul
)
pause
已修改
[
Last edited by terse on 2008-6-2 at 02:24 PM ]
作者: blljp
时间: 2008-6-1 21:23
谢谢 ! 可以使用,但我水平有限,还看不懂,有以下两点请教terse :
1, TT=50 是指50天天数吗,可以改成任意天数吧。
2, 我想删除d:\disk\dbs\bak\ 下的目录及其中文件 , 能帮我将相对路径改为绝对路径吗(以便批命令文件放在任意地方都能执行)?
作者: blljp
时间: 2008-6-1 21:34
补充 : 3, 执行完命令后桌面不留dos窗口(按任意键继续。。。)。
作者: blljp
时间: 2008-6-1 21:42
Quote: |
Originally posted by blljp at 2008-6-1 09:34 PM:
补充 : 3, 执行完命令后桌面不留dos窗口(按任意键继续。。。)。 |
|
这个问题我解决了,把最后的 pause 去掉就可以了 ,这样做行不行?
作者: terse
时间: 2008-6-1 23:13
Quote: |
Originally posted by blljp at 2008-6-1 21:23:
谢谢 ! 可以使用,但我水平有限,还看不懂,有以下两点请教terse :
1, TT=50 是指50天天数吗,可以改成任意天数吧。
2, 我想删除d:\disk\dbs\bak\ 下 ... |
|
TT=50 是指50天天数,可以改成任意天数
作者: blljp
时间: 2008-6-2 10:20
2, 我想删除d:\disk\dbs\bak\ 下的目录及其中文件 , 能帮我将相对路径改为绝对路径吗(以便批命令文件放在任意地方都能执行,增强安全性。)?
作者: terse
时间: 2008-6-2 10:47
Quote: |
Originally posted by blljp at 2008-6-2 10:20:
2, 我想删除d:\disk\dbs\bak\ 下的目录及其中文件 , 能帮我将相对路径改为绝对路径吗(以便批命令文件放在任意地方都能执行,增强安全性。)? |
|
要处理文件和文件夹需多个判断 试下面的(已修改):
@echo off
set tt=50&set ph=d:\disk\dbs\bak\
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
setlocal enabledelayedexpansion
for %%i in (p2 p3 t1 t2) do if !%%i! lss 10 set %%i=0!%%i!
for /f "tokens=*" %%i in ('dir /b /s "%ph%"') do (
set "ta=%%~ti"
if exist "%%i\" (
if "!ta:~0,4!!ta:~5,2!!ta:~8,2!" leq "!p1!!p2!!p3!" rd /s /q "%%i" 2>nul
) else if "!ta:~0,4!!ta:~5,2!!ta:~8,2!" leq "!p1!!p2!!p3!" del /a/q/f "%%i" >nul 2>nul
)
[
Last edited by terse on 2008-6-2 at 02:26 PM ]
作者: blljp
时间: 2008-6-2 12:37
Quote: |
Originally posted by terse at 2008-6-2 10:47 AM:
要处理文件和文件夹需多个判断 试下面的:
[code]
@echo off&SET TT=50&set ph=d:\disk\dbs\bak
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do ... |
|
谢谢你,测试了,存在两个问题:
1.dos窗口停留在屏幕上(请按任意键继续. . .)。
2.批命令文件放在其他地方不起作用,只有放在d:\disk\dbs\bak下才行。
作者: liyyhh
时间: 2008-6-2 13:23
都是些高手呀,请教了。
作者: blljp
时间: 2008-6-2 16:21
谢谢你,测试了,存在两个问题:
1.dos窗口停留在屏幕上(请按任意键继续. . .)。
2.批命令文件放在其他地方不起作用,只有放在d:\disk\dbs\bak下才行。
作者: terse
时间: 2008-6-2 18:12
Quote: |
Originally posted by blljp at 2008-6-2 16:21:
谢谢你,测试了,存在两个问题:
1.dos窗口停留在屏幕上(请按任意键继续. . .)。
2.批命令文件放在其他地方不起作用,只有放在d:\disk\dbs\bak下才行。 |
|
不会吧 我刚测试一下好的啊
作者: blljp
时间: 2008-6-2 19:29
1.按任意键后dos窗口才能消失。
2.将批命令文件放在其他路径下(比如:d:/test下),则无法删除d:\disk\dbs\bak下50天前的文件夹,只有将批命令文件放在d:\disk\dbs\bak下才能删除其下的50天前的文件夹。
拜托再帮我看看。
作者: terse
时间: 2008-6-2 19:49
Quote: |
Originally posted by blljp at 2008-6-2 19:29:
1.按任意键后dos窗口才能消失。
2.将批命令文件放在其他路径下(比如:d:/test下),则无法删除d:\disk\dbs\bak下50天前的文件夹,只有将批命令文件放在 ... |
|
你确认用了9楼修改后的代码吗 我这里测试过的啊
作者: blljp
时间: 2008-6-2 20:03
谢谢你! 我搞错了, 啥时候能学到你的水平呀!
作者: blljp
时间: 2008-6-2 20:08
Quote: |
Originally posted by blljp at 2008-6-2 08:03 PM:
谢谢你! 我搞错了, 啥时候能学到你的水平呀! |
|
你太厉害了!
作者: wuyongchang
时间: 2008-6-3 10:32
感谢你的帮助,我对代码进行了测试和学习,发现其中有一些小问题,做了修改并测试,请指教。
@echo off
D:
REM 目标分区
CD D:\Test\
REM 目标文件夹
SET TT=15
REM 设定天数
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%%100
if %p3% gtr %TT% goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
set/a PN2="!(p1%%4)&!(!(p1%%100))|!(p1%%400)",PN2=28+PN2
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
setlocal enabledelayedexpansion
set/a p3=p3-tt
REM 新增的赋值语句,减去设定的天数。
for %%i in (p2 p3) do if !%%i! lss 10 set %%i=0!%%i!
echo "%P2%&%p3%"
for /f "tokens=*" %%i in ('dir /b /ad') do (
set "ta=%%~ti"
if "!ta:~0,4!!ta:~5,2!!ta:~8,2!" leq "!p1!!p2!!p3!" rd /s /q "%%~fi" 2>nul
)
PAUSE
作者: blljp
时间: 2008-6-3 13:23
Quote: |
Originally posted by wuyongchang at 2008-6-3 10:32 AM:
感谢你的帮助,我对代码进行了测试和学习,发现其中有一些小问题,做了修改并测试,请指教。
@echo off
D:
REM 目标分区
CD D:\Test\
REM 目标文件夹
... |
|
不错,高手呀!能否发一个针对文件的。