Войти

Показать полную графическую версию : Архивирование логов при превышении размера


Mad Max
29-10-2015, 23:00
Есть папка с логами
Нужно сварганить скрипт, который проверяет размер каждого файла логов, если он превышает 1мб то егу нужно заархивировать, но архивы имеют нумерацию (sync.log.1.zip), тоесть нужно создать архив со следующим номером....

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

greg zakharov
30-10-2015, 11:57
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)
));




© OSzone.net 2001-2012