求一段代码

zhjno1xp 2012-02-16 11:07:46
我写了一段备份的代码,使用“系统名字+日期”来命名的,放在服务器的一个共享文件夹内(比如:AD20120215.bk)。但是遇到一个问题,就是数据越存越多,现在想仅保留三天的数据,剩下的让系统自动删除,请高手帮忙啊~~

万分感谢~~
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
busymj 2012-02-23
  • 打赏
  • 举报
回复

你在CMD窗口下运行forfiles /? 查看一下这个命令的含义吧。

我参数中: /p 表示指定目录

/s 表示包括子目录

/d -3 表示修改时间为3天前的

/m 表示限定文件类型

/c 表示操作的命令。

对于你目录中文件都消失了,建议你先用DIR命令看一下那些文件修改的时间。

另外查看一下你备份服务器上的日期是否正常。

祝好运。

[Quote=引用 7 楼 zhjno1xp 的回复:]

谢谢兄弟指点,不过脚本运行后,这个目录的所有文件都没有了~

引用 6 楼 41417 的回复:
奇怪,昨天发的第一个帖怎么就看不见了。

命令如下:

forfiles /P "文件目录" /S /d -3 /M *.bk /c "cmd /c del @path 0x09"
[/Quote]
zhjno1xp 2012-02-22
  • 打赏
  • 举报
回复
哥,你这脚本太高深了~~能麻烦您标注下下面脚本是什么意思嘛?
:DateDiff DateStart DateDiff Result
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=-" %%a in ("%~1") do set yy=%%a & set mm=%%b & set dd=%%c
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,i=153*m+2
set /a i=i/5+dd+y*365+y/4-y/100+y/400-2472633+%2
set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
set mm=0%mm%&set dd=0%dd%
endlocal &set %3=%yy%-%mm:~-2%-%dd:~-2%&goto :eof



[Quote=引用 3 楼 a457514 的回复:]

@echo off&setlocal enabledelayedexpansion
set n=100
:a
set /a n-=1
call :DateDiff %date:~0,10% -%n% data-%n%
del AD!data-%n%:~0,4!!data-%n%:~5,2!!data-%n%:~8,2!.bk /q
if %n% equ 3 (echo>nul……
[/Quote]
zhjno1xp 2012-02-22
  • 打赏
  • 举报
回复
谢谢兄弟指点,不过脚本运行后,这个目录的所有文件都没有了~

[Quote=引用 6 楼 41417 的回复:]
奇怪,昨天发的第一个帖怎么就看不见了。

命令如下:

forfiles /P "文件目录" /S /d -3 /M *.bk /c "cmd /c del @path 0x09"
[/Quote]
busymj 2012-02-17
  • 打赏
  • 举报
回复

奇怪,昨天发的第一个帖怎么就看不见了。

命令如下:

forfiles /P "文件目录" /S /d -3 /M *.bk /c "cmd /c del @path 0x09"

a457514 2012-02-17
  • 打赏
  • 举报
回复
第一个代码里面的100是默认你当前的文件数是100,如果更多请自行修改更大值,其实运行一次之后那个100就可以改成4了,可以提高代码效率。

辛辛苦苦写了这么多,结贴给分吧
a457514 2012-02-17
  • 打赏
  • 举报
回复
把上面的批处理保存为Backup.bat 然后再运行下面的代码就可以实现每天早上7点自动删除了,红字部分请根据自己的实际情况自行修改。
@echo off
sc config Schedule start= auto
net start Schedule
schtasks /create /tn Backup /ru %username% /rp 计算机密码 /sc daily /mo 1 /tr Backup.bat /st 07:00:00
exit
a457514 2012-02-17
  • 打赏
  • 举报
回复
@echo off&setlocal enabledelayedexpansion
set n=100
:a
set /a n-=1
call :DateDiff %date:~0,10% -%n% data-%n%
del AD!data-%n%:~0,4!!data-%n%:~5,2!!data-%n%:~8,2!.bk /q
if %n% equ 3 (echo>nul) else (call :a)
exit

:DateDiff DateStart DateDiff Result
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=-" %%a in ("%~1") do set yy=%%a & set mm=%%b & set dd=%%c
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,i=153*m+2
set /a i=i/5+dd+y*365+y/4-y/100+y/400-2472633+%2
set /a a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
set mm=0%mm%&set dd=0%dd%
endlocal &set %3=%yy%-%mm:~-2%-%dd:~-2%&goto :eof
busymj 2012-02-16
  • 打赏
  • 举报
回复

用上面的内容,创建个批处理,然后在调度中新建一个项目,每天自动运行就好了。
busymj 2012-02-16
  • 打赏
  • 举报
回复


forfiles /P "文件存放目录" /S /d -3 /M *.bk /c "cmd /c del @path 0x09"

祝好运:)

18,124

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧