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

[文件操作] 批处理怎样每天按时把一个文件夹的文件移动到另一文件夹?

请教下怎么写命令能每天定时把一个文件夹内的文件复制到另一个文件夹内(不同的分区),并且按日期创建文件夹。并设定一个时期内能删除之前的文件夹?
我之前写的简单的
Xcopy e:\www1 g:\web /e/y/r
Xcopy e:\hd g:\web\hd /e/y/r
只能复制一次 还不能按日期生成 。。

我能想到的:
at 9:00 /every:m,t,w.th.s,su,f Xcopy e:\www1 g:\web /e/y/r
at 9:00 /every:m,t,w.th.s,su,f Xcopy e:\hd g:\web\hd /e/y/r
菜鸟一个,潜心学习
总有学会的一天

TOP

用AT是个好办法,但会有一个小缺点,那就是过了时间才开机就作废了。
还需要一个补充命令,开机运行的,如果开机时间超过九点则检测当日目录是否存在,有则不运行,无则执行命令。
世界上没有学不会的知识,也没有想得到却做不到的事!

TOP

那可否把这个 任务 加到window带的 计划任务内 时间由计划任务里的时间去控制呢?

TOP

本帖最后由 zxiang1231 于 2011-6-21 15:00 编辑

怎么写,能让操作会按照每天的日期把拷贝的东西建包,并且能在一定时间内删除之前,拷贝的文件夹呢?

TOP

我提供一个思路:
用AT 添加一个定时任务  (缺点,在这个时间之后开机就不能生效)
用XCOPY 命令 备份
文件夹的生成如果用日期形式,可以用时间变量,如 %date:~0,10%  这样生成年月日 这样的文件夹,如2011-06-21  
删除,这个首先要将日期的变量转成一个数值型,再进行计算,最后再转成日期形,判断之后再用RD 来删除目录即可!
享受批处理的神奇!!!

TOP

本帖最后由 cxmzlxb 于 2011-6-24 12:41 编辑
  1. @echo off
  2. :start
  3. setlocal&cls
  4. set /p tian=      请指定要追溯的天数:&echo\
  5. call :Date2Day "%date%" %tian% ok
  6. echo       %ok%
  7. endlocal&pause>nul&goto start
  8. :Date2Day 计算指定天数 前/后 的日期及星期 (封装)
  9. @echo off&setlocal ENABLEEXTENSIONS
  10. for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
  11. set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
  12. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  13. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  14. set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
  15. set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
  16. set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
  17. (if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
  18. for %%a in (一/1 二/2 三/3 四/4 五/5 六/6 日/0) do (
  19. for /f "tokens=1,2 delims=/" %%i in ("%%a")do set %%i=%%j&set ".%%j=%%i")
  20. if %~2 gtr 0 (set /a d=^(7-%~2%%7+%date:~-1%^)%%7&set x=前) else (
  21. set /a d=^(~%~2+1+%date:~-1%^)%%7&set x=后)
  22. call set "d=星期%%.%d%%%"
  23. endlocal&set %~3=%yy%-%mm%-%dd% %d%&goto :EOF
复制代码
这段代码可以做时间差,从而来得出删出时间,现成的!
享受批处理的神奇!!!

TOP

今天刚学的schtasks可能可以,代码嘛 我不会写请高人吧

TOP

返回列表