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

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

[复制链接]
发表于 2013-9-20 15:03:06 | 显示全部楼层 |阅读模式
本帖最后由 浪笑流尘 于 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.        
  28.         REM ::sleep
  29.         REM echo Wscript.Sleep Wscript.Arguments(0) * 1000 >%systemroot%\temp\Delay.vbs
  30.         REM "%SystemRoot%\System32\WScript.exe" %systemroot%\temp\Delay.vbs %sleep_time%
  31.         REM del %systemroot%\temp\Delay.vbs
  32.        
  33.         REM ::exit execute,and exit form commandline,only for test!!!
  34.         REM goto :eof       
  35.         )
  36. popd
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:48 , Processed in 0.029468 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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