Архивирование логов при превышении размера
Есть папка с логами
Нужно сварганить скрипт, который проверяет размер каждого файла логов, если он превышает 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.
© OSzone.net 2001-