找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23862|回复: 3

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

[复制链接]
发表于 2012-9-3 08:26:26 | 显示全部楼层 |阅读模式
  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为名字,而不是这个文件夹中所有文件,
请教在侠们该如何更改。
发表于 2012-9-3 13:36:05 | 显示全部楼层
第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. )
复制代码
 楼主| 发表于 2012-9-3 14:53:24 | 显示全部楼层
回复 2# apang

谢谢2楼的回答,不过我找到更简单的代码
36行换成
  1. rar a j:\241bak\%od%.rar -r \\172.15.1.2\f$\sqlbak\*%od%*.bak
复制代码
发表于 2012-9-3 15:12:50 | 显示全部楼层
需要压缩备份的文件都是以日期命名的?缘来如此。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 11:25 , Processed in 0.015843 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表