中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-10 06:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]批处理自动删除N天之前文件目录 查看 3,333 回复 35
31 发表于 2008-10-21 18:38 ·  中国 辽宁 沈阳 和平区 电信
初级用户
积分 64
发帖 37
注册 2007-03-14 03:38
19年会员
UID 81659
性别 男
状态 离线
Originally posted by dddyjq1 at 2008-10-21 01:15 AM:
翻个老贴给你 ,测试成功的

@echo off
SET TT=1
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "del ...


2000下面还是不行

出现:

此时不应有 "。
此时不应有 "。
此时不应有 "。
此时不应有 "。
此时不应有 "。
32 发表于 2008-10-21 19:48 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
我这边的情况:

@echo off
set TT=5&set "ph=d:\000"
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,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+=%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3-=tt
setlocal enabledelayedexpansion
for %%i in (p2 p3) do if !%%i! lss 10 set %%i=0!%%i!
for /f "skip=7 tokens=1,3*" %%i in ('dir /ad /tc "%ph%" 2^>nul^|find /v "字节"') do (
if %p1%-%p2%-%p3% gtr %%i echo rd /s /q "%ph%\%%k"
)
pause&exit
附件
aaa.gif
简单!简单!再简单!
33 发表于 2008-10-21 22:09 ·  中国 辽宁 沈阳 和平区 电信
初级用户
积分 64
发帖 37
注册 2007-03-14 03:38
19年会员
UID 81659
性别 男
状态 离线
Originally posted by terse at 2008-10-21 07:48 PM:
我这边的情况:

@echo off
set TT=5&set "ph=d:\000"
for /f "tokens=1-3 delims=-/\:. " %%i in ("%date%") do set /a p1=%%i,p2=100%%j%%100,p3=100%%k%% ...


测试成功,感谢!!
要是d:\000下面的文件也要删除呢?怎么处理?麻烦了。。。
34 发表于 2008-10-21 23:13 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
Originally posted by yuehong at 2008-10-21 22:09:


测试成功,感谢!!
要是d:\000下面的文件也要删除呢?怎么处理?麻烦了。。。

其实这个就是我20楼 给你的 你竟然顶到这里
删文件 你要先dir /a-d /b 然后 判断时间 后 del
简单!简单!再简单!
35 发表于 2008-10-27 16:18 ·  中国 四川 成都 电信
新手上路
积分 1
发帖 1
注册 2008-10-27 15:14
17年会员
UID 129239
性别 男
状态 离线
很好啊
36 发表于 2008-11-03 11:56 ·  中国 广东 东莞 电信
中级用户
★★
积分 461
发帖 243
注册 2007-10-14 16:56
18年会员
UID 99730
性别 男
状态 离线
在win2003下正常删
set FileDate=2008-10-27 22:20
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! LSS 20081018 (echo ....)

在win2000下要怎样改这个代码呢?
set FileDate=08-10-22 17:56
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! LSS 20081023 (echo ....)

set desfolder=e:\rardata
setlocal enabledelayedexpansion
>"%tmp%\MyDel.vbs" echo dt=date()-11
>>"%tmp%\MyDel.vbs" echo s=right(year(dt),4) ^& right("0" ^&

month(dt),2) ^& right("0" ^& day(dt),2)
>>"%tmp%\MyDel.vbs" echo wscript.echo s
for /f %%a in ('cscript /nologo "%tmp%\MyDel.vbs"') do set DateFlag=%%a
echo %DateFlag%
pause
for /f "tokens=*" %%a in ('dir /s /b /a-d "%desfolder%"') do (
set FileDate=%%~ta 这里取得的文件日期与xp 及2003不同.
set FileDate=!FileDate:-=!
set FileDate=!FileDate:~0,8!
if !FileDate! lss %DateFlag% (
echo "%%a"
)
)
pause
论坛跳转: