Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Архивирование логов при превышении размера (http://forum.oszone.net/showthread.php?t=307289)

Mad Max 29-10-2015 23:00 2569589

Архивирование логов при превышении размера
 
Есть папка с логами
Нужно сварганить скрипт, который проверяет размер каждого файла логов, если он превышает 1мб то егу нужно заархивировать, но архивы имеют нумерацию (sync.log.1.zip), тоесть нужно создать архив со следующим номером....

Зарание спасибо за подсказки и помощь.

greg zakharov 30-10-2015 11:57 2569705

Mad Max, когда задается вопрос относительно файловой системы, обычно принято приводить пример содержимого папки, имен файлов и дыр и пыр, словом, все то, что могло бы в значительной ере ускорить решение Вашей же проблемы\задачи (нужное пометить маркером). В данном же случае можно привести следующий пример:
Код:

@set @zip=0 /*
  @echo off
    set @zip=
    setlocal
      set "i=0"
      for %%i in (%*) do set /a "i+=1"
      if "%i%" neq "2" (
        echo:Usage: %~n0 ^<directory^> ^<max_size^>
        goto:eof
      )
      cscript /nologo /e:jscript "%~f0" %*
    endlocal
  exit /b
*/

(function(dir, len) {
  var e, i = 1, itm, zip, shl = new ActiveXObject('Shell.Application');
 
  with (new ActiveXObject('Scripting.FileSystemObject')) {
    e = new Enumerator(GetFolder(GetAbsolutePathName(dir)).Files);
    for (; !e.atEnd(); e.moveNext()) {
      if (e.item().Size > len) {
        itm = 'sync.' + GetBaseName(e.item()) + '.' + i + '.zip';
       
        zip = CreateTextFile(itm, true);
        zip.Write("PK\05\06" + new Array(19).join("\0"));
        zip.Close();
       
        shl.NameSpace(GetFile(itm).Path).CopyHere(e.item().Path);
        WScript.Sleep(500);
        WScript.StdOut.Write(itm + '......created\r');
       
        i++;
      }
    }
  }
}(
  WScript.Arguments.length !== 2
  ? WScript.Quit(1)
  : WScript.Arguments.Unnamed(0), WScript.Arguments.Unnamed(1)
));



Время: 21:51.

Время: 21:51.
© OSzone.net 2001-