标题: [文件操作] 批处理如何提取特定日期文件进行压缩 [打印本页]
作者: cancehu 时间: 2012-9-3 08:26 标题: 批处理如何提取特定日期文件进行压缩
- @echo off
- set day=%date%
- set days=0
-
- setlocal enabledelayedexpansion
- :: 提取日期
- for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
- set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
- )
- set /a sd-=1
- if %sd% leq 0 call :count
- set sm=0%sm%
- set sd=0%sd%
- set od=%sy%%sm:~-2%%sd:~-2%
- goto rar
-
- :count
- set /a sm-=1
- if !sm! equ 0 set /a sm=12, sy-=1
- call :days
- set /a sd+=days
- if %sd% leq 0 goto count
- goto :eof
-
- :days
- :: 获取指定月份的总天数
- set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
- set /a max=28+leap
- for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i
- goto :eof
-
- :rar
- echo %od%
-
- net use \\172.15.1.2\ipc$ /user:administrator (abc)
- rar a -r J:\241bak\%od%.rar \\172.15.1.2\f$\sqlbak
复制代码
请教上面代码
我172.15.1.2上面F盘sqlbak文件夹中很多个子文件夹,这些子文件夹每天会生成一个文件,我现在运行批处理就会反sqlbak所有文件都压缩到j:\241bak文的夹中以日期为名字命名
而我要的效果如果今天是8月23日就可提取8月22日的文件进行压缩,命名也是以20120822.rar为名字,而不是这个文件夹中所有文件,
请教在侠们该如何更改。
作者: apang 时间: 2012-9-3 13:36
第36行替换成下面的试试:- for /f "delims=" %%a in ('dir /a-d/b/s "\\172.15.1.2\f$\sqlbak"') do (
- set "T=%%~ta"
- set T=!T:-=!&set T=!T:/=!&set T=!T:.=!
- if "!T:~,8!"=="%od%" rar a J:\241bak\%od%.rar "%%a"
- )
复制代码
作者: cancehu 时间: 2012-9-3 14:53
回复 2# apang
谢谢2楼的回答,不过我找到更简单的代码
36行换成- rar a j:\241bak\%od%.rar -r \\172.15.1.2\f$\sqlbak\*%od%*.bak
复制代码
作者: apang 时间: 2012-9-3 15:12
需要压缩备份的文件都是以日期命名的?缘来如此。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |