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

[文件操作] 批处理压缩、删除多级、多个目录的日志

本帖最后由 浪笑流尘 于 2013-9-20 15:05 编辑

情况如下:
1、现公司有多台应用服务器,每天产生大量日志(大约50-80GB)公布在不同的文件夹中,要手动压缩并删除。着实很累,一晚上压日志就够玩了,于了决定用批处理解决。
2、日志文件夹分布(各应用目录者类似)
   log_path-------------------日志根目录
      │
      ├-App1 ------------------应用1目录
      │ │
      │ ├--service------------服务日志目录(先暂时不考虑)
      │ │
      │ ├--aaa-----------------日志目录
      │     |
      │     ├--aaa.20130920_01.1.log----------------按时间及序号排列的日志文件
      │     |
      │     ├--aaa.20130920_01.2.log----------------按时间及序号排列的日志文件
      │     |
      │     ├--aaa.20130920_02.1.log----------------按时间及序号排列的日志文件
........
      │     ├--aaa.20130919.zip--------------------压缩后的日志 (要压缩今天以前的日志并将原文件删除)        
      ├-App2
问题:
1、以下是我写的代码,测试执行时,没有压缩测试文件夹中内容,也没有生成桌面日志。
2、如果将压缩部分写成子程序该如何写,我对子程序的参数传递不太熟。
3、执行效率,我在测试时压缩一个200MB的文件CPU占用80%多,服务器第次压缩的日志有10G,那cpu占用还得了,
4、请各位网友帮忙分析下,对代码部分帮忙指正,先在些谢过!!!
  1. echo off
  2. ::%windir%=c:\windows
  3. set programe_path=%windir%\winrar.exe
  4. set log_path=h:\log
  5. set /a yesterday=%date:~0,4%%date:~5,2%%date:~8,2%-1
  6. set today=%date:~0,4%%date:~5,2%%date:~8,2%
  7. set file_format=zip
  8. set sleep_time=60
  9. pushd %log_path%
  10. for /f %%f in ('dir/ad/b') do (
  11. set para_dir=%%f
  12. pushd %%f
  13. echo [%today% %time:~0,2%:%time:~3,2%:%time:~6,2%] start compress logs in %para_dir% >>%userprofile%\desktop\Taskschd_compress.log
  14. for /f  %%d in ('dir/a-d/b|findstr /i /v .*%file_format%) do (
  15. for /f "tokens=2 delims=._" %%D in ("%%d") do (
  16. if %%D lss %today% (
  17. ::Use Winrar.exe(support ZIP、RAR、7z etc.)
  18. %programe_path% A -df -y -ibck -w%cd% -inul  -ilog%userprofile%\desktop\Taskschd_compress.log  %para_dir%.%yesterday%.%file_format% %%d
  19. ::Use rar.exe(only  support RAR)
  20. ::%programe_path% A -df -y  -w%cd% -inul  -ilog%userprofile%\desktop\Taskschd_compress.log  %para_dir%.%filename% %%d
  21. echo [%today% %time:~0,2%:%time:~3,2%:%time:~6,2%] ----compress %%d into %para_dir%.%yesterday%.%file_format% successfully! >>%userprofile%\desktop\Taskschd_compress.log
  22. )
  23. )
  24. )
  25. echo [%today% %time:~0,2%:%time:~3,2%:%time:~6,2%] compress logs into %para_dir% successfully!>>%userprofile%\desktop\Taskschd_compress.log
  26. popd
  27. REM ::sleep
  28. REM echo Wscript.Sleep Wscript.Arguments(0) * 1000 >%systemroot%\temp\Delay.vbs
  29. REM "%SystemRoot%\System32\WScript.exe" %systemroot%\temp\Delay.vbs %sleep_time%
  30. REM del %systemroot%\temp\Delay.vbs
  31. REM ::exit execute,and exit form commandline,only for test!!!
  32. REM goto :eof
  33. )
  34. popd
复制代码

返回列表