中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何删除特定目录下50天以前建立的子目录
« [1] [2] »
作者:
标题: 如何删除特定目录下50天以前建立的子目录 上一主题 | 下一主题
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『楼 主』:  如何删除特定目录下50天以前建立的子目录

如何删除特定目录下50天以前建立的子目录及其中的文件(彻底删除不放到回收站),拜托各位高手指导。

2008-6-1 12:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 2 楼』:  

没有人知道吗?

2008-6-1 14:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 3 楼』:  

刚发一个判断文件的  现在又来个文件夹  修改一下看能用否?没测试
@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 ]



简单!简单!再简单!
2008-6-1 15:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 4 楼』:  

谢谢 ! 可以使用,但我水平有限,还看不懂,有以下两点请教terse :
1,   TT=50 是指50天天数吗,可以改成任意天数吧。
2,   我想删除d:\disk\dbs\bak\ 下的目录及其中文件 , 能帮我将相对路径改为绝对路径吗(以便批命令文件放在任意地方都能执行)?

2008-6-1 21:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 5 楼』:  

补充 : 3, 执行完命令后桌面不留dos窗口(按任意键继续。。。)。

2008-6-1 21:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by blljp at 2008-6-1 09:34 PM:
补充 : 3, 执行完命令后桌面不留dos窗口(按任意键继续。。。)。

这个问题我解决了,把最后的 pause 去掉就可以了 ,这样做行不行?

2008-6-1 21:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by blljp at 2008-6-1 21:23:
谢谢 ! 可以使用,但我水平有限,还看不懂,有以下两点请教terse :
1,   TT=50 是指50天天数吗,可以改成任意天数吧。
2,   我想删除d:\disk\dbs\bak\ 下 ...

TT=50 是指50天天数,可以改成任意天数



简单!简单!再简单!
2008-6-1 23:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 8 楼』:  

2,   我想删除d:\disk\dbs\bak\ 下的目录及其中文件 , 能帮我将相对路径改为绝对路径吗(以便批命令文件放在任意地方都能执行,增强安全性。)?

2008-6-2 10:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  



  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 ]



简单!简单!再简单!
2008-6-2 10:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 10 楼』:  



  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下才行。

2008-6-2 12:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
liyyhh
初级用户





积分 48
发帖 27
注册 2008-6-1
状态 离线
『第 11 楼』:  

都是些高手呀,请教了。

2008-6-2 13:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 12 楼』:  

谢谢你,测试了,存在两个问题:
1.dos窗口停留在屏幕上(请按任意键继续. . .)。
2.批命令文件放在其他地方不起作用,只有放在d:\disk\dbs\bak下才行。

2008-6-2 16:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by blljp at 2008-6-2 16:21:
谢谢你,测试了,存在两个问题:
1.dos窗口停留在屏幕上(请按任意键继续. . .)。
2.批命令文件放在其他地方不起作用,只有放在d:\disk\dbs\bak下才行。

不会吧  我刚测试一下好的啊



简单!简单!再简单!
2008-6-2 18:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
blljp
初级用户





积分 26
发帖 12
注册 2008-6-1
状态 离线
『第 14 楼』:  

1.按任意键后dos窗口才能消失。
2.将批命令文件放在其他路径下(比如:d:/test下),则无法删除d:\disk\dbs\bak下50天前的文件夹,只有将批命令文件放在d:\disk\dbs\bak下才能删除其下的50天前的文件夹。
拜托再帮我看看。

2008-6-2 19:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by blljp at 2008-6-2 19:29:
1.按任意键后dos窗口才能消失。
2.将批命令文件放在其他路径下(比如:d:/test下),则无法删除d:\disk\dbs\bak下50天前的文件夹,只有将批命令文件放在 ...

你确认用了9楼修改后的代码吗  我这里测试过的啊



简单!简单!再简单!
2008-6-2 19:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: