标题: [日期时间] 【已解决】批处理删除按照“年月”为名称建立文件夹遇到08月09月时的问题,谢谢 [打印本页]
作者: ckevin 时间: 2014-9-24 15:38 标题: 【已解决】批处理删除按照“年月”为名称建立文件夹遇到08月09月时的问题,谢谢
本帖最后由 ckevin 于 2014-9-25 09:30 编辑
原意是这样的,我有如下名称的一些备份文件夹,里面都有备份的数据。现在想写个批处理每月1号自动删除名称为2月以前的备份目录
201308
201309
201310
201311
201312
201401
201402
201403
201405
201406
201407
201408
201409
我自己写了一个但遇到8月9月的时候,就会报错,请各位帮忙指点一下,谢谢!
我的批处理如下:- set year=%date:~0,4%
- set month=%date:~5,2%
- set day=%date:~8,2%
- set mydate=%year%%month%%day%
- set mymonth=%year%%month%
- set filename=oracle9备份%mydate%
- set sfilepath=备份\\%mymonth%
- E:
- cd \
- rem -------在每个月的1号删除前面2个月的备份--------------
- if %day%==01 goto :del_file
- echo exit
- :del_file
- if %month% leq 2 set /a delyear=%year%-1
- if %month% gtr 2 set /a delyear=%year%
- if %month% leq 2 set /a delmonth=%month%+10
- if %month% gtr 2 set /a delmonth=%month%-2
- set delforder=%delyear%%delmonth%
- if %day%==01 rd /Q /S 备份\\%delforder%
- echo exit
复制代码
作者: neorobin 时间: 2014-9-24 17:19
回复 1# ckevin
08 09 都是以 0 开头, 在 set /a 运算中被解释成 8 进制数, 但又是非法的, 因为 8 进制数只能有 [0,1,2,3,4,5,6,7] 这 8 个数码
将你代码中 14 -- 17 行可以改成如下- set /a "m=1%month%-100, s=m-3>>31, delyear=year+s, m-=2, m+=s&12,m+=100"
- set "delmonth=%m:~-2%"
复制代码
作者: ckevin 时间: 2014-9-25 09:29
回复 2# neorobin
谢谢老大,我的问题解决了,麻烦方便的时候能给解释一下这个表达式吗。特别是s=m-3>>31, delyear=year+s, m-=2, m+=s&12,m+=100这几处,谢谢。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |