Board logo

标题: [文件操作] 批处理怎样自动压缩备份3个月前的数据? [打印本页]

作者: zhao2858772    时间: 2011-4-15 16:55     标题: 批处理怎样自动压缩备份3个月前的数据?

如题:D:/back目录下 有 1101,1102,1103,1104(年-月)这类命名的文件夹,将3个月之前的文件夹 压缩备份到 E:/back目录下,最后删除D盘下已经被备份的文件夹
作者: zhao2858772    时间: 2011-4-15 17:44

<code>
@echo off
setlocal EnableDelayedExpansion
rem 定义路径
set bspath=d:\backup
set wrar="C:\Program Files\WinRAR\Rar.exe"
set bdpath=e:\backup

rem 定义差距时间
set mdif=3

rem 获取当前年、月
set ny=%date:~2,2%
set /a nm=%date:~5,2%

rem 根据文件夹名确认是否要备份
for /f %%i in ('dir /b /on /ad %bspath%') do (
call :bak %%i
)

goto :eof

:bak
set fname=%1
set /a fm=%fname:~2,2%+2
echo %fm%
if not %fname:~0,2%==%ny% (
%wrar% a -df %bdpath%\%1.rar %bspath%\%1
) else if %fm% LSS %nm% (
%wrar% a -df %bdpath%\%1.rar %bspath%\%1
)

goto :eof

</code>

以上是我朋友写的,但是我跑了下 发现不对,求高手指点
作者: hanyeguxing    时间: 2011-4-15 17:50

本帖最后由 hanyeguxing 于 2011-4-15 17:56 编辑

1,code是用[]括起来的,而不是<>
2,推荐使用winrar.exe或rar.exe,相关语法参考winrar安装目录下的WinRAR.hlp、WinRAR.chm、Rar.txt
例如:
-dr压缩后删除源到回收站
-df压缩后直接删除源文件而不删除源到回收站
-dw压缩后直接删除源文件并以0填充来反恢复
-toAd只处理A天前的文件
winrar.exe或rar.exe支持*和?通配、掩码




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2