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

[日期时间] 批处理按日期复制文件为何8月1日、9月1日执行失败?

  1. @echo off
  2. set /a y=%date:~0,4%
  3. set /a m=%date:~5,2%-1
  4. set /a ms=%date:~5,2%-2
  5. REM m=%date:~5,2%-1,变量为上月月份
  6. if %m% lss 10 set m=0%m%
  7. if %ms% lss 10 set ms=0%ms%
  8. REM 月份小于10时,补零为两位数
  9. set jy=[%y%年%m%月%]
  10. if "%date:~8,2%"=="01" echo f | xcopy d:\统计\速报.* /h /y g:\客运月报\速报%jy%.xls
  11. if not %errorlevel%==0 (echo    速报失败 ?)
  12. attrib g:\客运月报\*.* -h
  13. pause
复制代码
以上批处理文件,8月1日、9月1日执行失败,其余月份执行正常!

回复  apang
@echo off
set /a y=%date:~0,4%,m=(1%date:~5,2%-90)%%12+101,y-=m-2/112
set "jy=[%y%年 ...
7016427 发表于 2014-8-11 19:51

老师你好!以上2015年2月1日执行时,复制的文件名为2015年0月,我要的结果为2014年12月,其他月份复制的文件名都正确!还麻烦老师改改

TOP

回复 16# 7016427


    你是看不懂 13 楼的意思还是就是不把要求更新到顶楼?

TOP

回复 5# apang

@echo off
set /a y=%date:~0,4%
set /a m=1%date:~5,2%-102
set "jy=[%y%年%m:~%月]"
if "%date:~8,2%"=="01" echo f | xcopy d:\统计\速报.* /h /y g:\客运月报\速报

%jy%.xls
if not %errorlevel%==0 (echo    速报失败 ?)
attrib g:\客运月报\*.* -h
pause
以上2015年2月1日执行时,复制的文件名为2015年0月,我要的结果为2014年12月,其他月份复制的文件名都正确!

TOP

回复 14# 7016427


   帖子的每层都有 回复 和 引用 两个链接,如果是自己发的,会多一个 编辑,点进去就能修改帖子了

TOP

回复 13# apang


    请问老师,怎么改?

TOP

你拒绝更新到顶楼,我拒绝有效回答,公平合理
1

评分人数

    • CrLf: 好无奈技术 + 1

TOP

@echo off
set /a y=%date:~0,4%
set /a m=1%date:~5,2%-102
set "jy=[%y%年%m:~%月]"
if "%date:~8,2%"=="01" echo f | xcopy d:\统计\速报.* /h /y g:\客运月报\速报

%jy%.xls
if not %errorlevel%==0 (echo    速报失败 ?)
attrib g:\客运月报\*.* -h
pause
以上2015年2月1日执行时,复制的文件名为2015年0月,我要的结果为2014年12月,其他月份复制的文件名都正确!

TOP

回复 10# apang
按5楼老师的怎么改法
如:9月1日执行,复制后的文件名为:速报2014年7月

TOP

回复 9# 7016427


    更新到顶楼,也就是1楼。如果出现0月,-1月怎么办

TOP

回复 7# apang

要求是:每月1号复制,复制后的文件名为上上月,比如,9月1日执行,复制后的文件名为"速报2014年7月.xls"

TOP

回复 7# apang


    请问老师应该怎么改?

TOP

回复 6# 7016427


    因为你改错了
把你的具体要求更新到顶楼再说

TOP

回复 5# apang
@echo off
set /a y=%date:~0,4%,m=(1%date:~5,2%-90)%%12+101,y-=m-2/112
set "jy=[%y%年%m:~1%月]"
if "%date:~8,2%"=="01" echo f | xcopy d:\统计\速报.* /h /y g:\客运月报\速报%jy%.xls
if not %errorlevel%==0 (echo    速报失败 ?)
attrib g:\客运月报\*.* -h
pause
以上我想实现,9月1日复制时,复制的文件为:速报2014年7月。为什么以上执行失败!

TOP

回复 4# 7016427
  1. @echo off
  2. set /a y=%date:~0,4%,m=(1%date:~5,2%-90)%%12+101,y-=m/112
  3. set "jy=[%y%年%m:~1%月]"
  4. if "%date:~8,2%"=="01" echo f | xcopy d:\统计\速报.* /h /y g:\客运月报\速报%jy%.xls
  5. if not %errorlevel%==0 (echo    速报失败 ?)
  6. attrib g:\客运月报\*.* -h
  7. pause
复制代码

TOP

返回列表