[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何提取特定日期文件进行压缩

  1. @echo off
  2. set day=%date%
  3. set days=0
  4. setlocal enabledelayedexpansion
  5. :: 提取日期
  6. for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do (
  7.     set /a sy=%%i, sm=100%%j %% 100, sd=100%%k %% 100
  8. )
  9. set /a sd-=1
  10. if %sd% leq 0 call :count
  11. set sm=0%sm%
  12. set sd=0%sd%
  13. set od=%sy%%sm:~-2%%sd:~-2%
  14. goto rar
  15. :count
  16. set /a sm-=1
  17. if !sm! equ 0 set /a sm=12, sy-=1
  18. call :days
  19. set /a sd+=days
  20. if %sd% leq 0 goto count
  21. goto :eof
  22. :days
  23. :: 获取指定月份的总天数
  24. set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)"
  25. set /a max=28+leap
  26. for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i
  27. goto :eof
  28. :rar
  29. echo %od%
  30. net use \\172.15.1.2\ipc$ /user:administrator (abc)
  31. 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为名字,而不是这个文件夹中所有文件,
请教在侠们该如何更改。

第36行替换成下面的试试:
  1. for /f "delims=" %%a in ('dir /a-d/b/s "\\172.15.1.2\f$\sqlbak"') do (
  2.   set "T=%%~ta"
  3.   set T=!T:-=!&set T=!T:/=!&set T=!T:.=!
  4.   if "!T:~,8!"=="%od%" rar a J:\241bak\%od%.rar "%%a"
  5. )
复制代码

TOP

回复 2# apang

谢谢2楼的回答,不过我找到更简单的代码
36行换成
  1. rar a j:\241bak\%od%.rar -r \\172.15.1.2\f$\sqlbak\*%od%*.bak
复制代码

TOP

需要压缩备份的文件都是以日期命名的?缘来如此。。。

TOP

返回列表