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

[日期时间] 【已解决】批处理删除按照“年月”为名称建立文件夹遇到08月09月时的问题,谢谢

[复制链接]
发表于 2014-9-24 15:38:10 | 显示全部楼层 |阅读模式
本帖最后由 ckevin 于 2014-9-25 09:30 编辑

原意是这样的,我有如下名称的一些备份文件夹,里面都有备份的数据。现在想写个批处理每月1号自动删除名称为2月以前的备份目录
201308
201309
201310
201311
201312
201401
201402
201403
201405
201406
201407
201408
201409
我自己写了一个但遇到8月9月的时候,就会报错,请各位帮忙指点一下,谢谢!
我的批处理如下:
  1. set year=%date:~0,4%
  2. set month=%date:~5,2%
  3. set day=%date:~8,2%
  4. set mydate=%year%%month%%day%
  5. set mymonth=%year%%month%
  6. set filename=oracle9备份%mydate%
  7. set sfilepath=备份\\%mymonth%
  8. E:
  9. cd \
  10. rem -------在每个月的1号删除前面2个月的备份--------------
  11. if %day%==01 goto :del_file
  12. echo exit
  13. :del_file
  14. if %month% leq 2  set /a delyear=%year%-1  
  15. if %month% gtr 2  set /a delyear=%year%
  16. if %month% leq 2  set /a delmonth=%month%+10
  17. if %month% gtr 2  set /a delmonth=%month%-2
  18. set delforder=%delyear%%delmonth%
  19. if %day%==01 rd /Q /S 备份\\%delforder%
  20. echo exit
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-9-24 17:19:36 | 显示全部楼层
回复 1# ckevin


08  09   都是以  0   开头,  在 set /a 运算中被解释成 8 进制数,  但又是非法的, 因为 8 进制数只能有 [0,1,2,3,4,5,6,7] 这 8 个数码

将你代码中 14 -- 17 行可以改成如下
  1. set /a "m=1%month%-100, s=m-3>>31, delyear=year+s, m-=2, m+=s&12,m+=100"
  2. set "delmonth=%m:~-2%"
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-9-25 09:29:55 | 显示全部楼层
回复 2# neorobin


    谢谢老大,我的问题解决了,麻烦方便的时候能给解释一下这个表达式吗。特别是s=m-3>>31, delyear=year+s, m-=2, m+=s&12,m+=100这几处,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 01:43 , Processed in 0.031055 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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