В данном разделе находится общая информация.
В данном разделе находятся примеры различных Linux shell скриптов.
В данном разделе находятся примеры различных скриптов на WSH.
В данном разделе находятся материалы по разным темам.

Правильный CSS!

Для корректного отображения страницы, рекомендуется использовать браузер поддерживающий JavaScript.

Для навигации пользуйтесь боковым меню и кнопками "Описание" и "Подробно".

Простой WSH (JS) скрипт для удаления файлов по маске и дате

Основные возможности:

  • Позволяет удалять файлы по маске и дате создания;
  • Возможность запуска в планировщике заданий;
  • Возможность тестового запуска;
  • Ведение логов;

Пример запуска скрипта на WSH (JS) для удаления файлов по маске и дате.

Скрипт test_del.js запускать из командной строки или через планировщик Windows.

Синтаксис:

test_del.js путь маска срок [логфайл [тест [тип даты]]]

Обязательные ключи:

  • путь - полный путь к каталогу с файлами (например C:\temp или \\srv\c$\temp);
  • маска - маска файла (например * (все файлы) или txt). точку можно не писать. Пример для файла test.exe можно указать на выбор условие: st.exe или t.exe или .exe или xe или е;
  • срок - в днях, считая назад от сегодняшнего.

Необязательные ключи:

  • логфайл - писать или нет (по умолчанию нет). Значения 1 или 0. Пишет в целевой каталог;
  • тест - тестовый запуск без удаления (по умолчанию нет). Значения 1 или 0;
  • тип даты - сверять с датой создания - 0 (по умолчанию), или с датой последнего изменения - 1.
!!!Все ключи указывать в строгой посдедовательности!!!
Для удаления файлов оканчивающихся на tmp в папке c:\temp старше 14 дней и логированием:
- по дате последнего изменения: test_del.js c:\temp tmp 14 1 0 1
- по дате создания: test_del.js c:\temp tmp 14 1

Пример js файла:

(Скачать файл можно будет здесь test_del-1.3.zip. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)

Текст на WSH (JS):

//JScript
// Version 1.3 (2010-09-03)
// Copyright 2009-2010 Konstantin Nadezhdin <w.homenki.ru>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

objArgs = WScript.Arguments;
var fso = new ActiveXObject("Scripting.FileSystemObject");

//Входные параметры
//Каталог
try {
    var srvpath = objArgs(0);
}
catch(e) {
    WScript.Echo("Не задан каталог");
    WScript.Quit();
}
//Маска
try {
    var filemask = objArgs(1);
}
catch(e) {
    WScript.Echo("Не задана маска");
    WScript.Quit();
}
//Время хранения дней
try {
    var timetosave = objArgs(2);
}
catch(e) {
    WScript.Echo("Не задано время хранения");
    WScript.Quit();
}
//Делать лог или нет (по умолчанию нет)
try {
    var makelog = objArgs(3);
}
catch(e) {
    var makelog = 0;
}
//Делать тест или нет (по умолчанию нет)
try {
    var maketest = objArgs(4);
}
catch(e) {
    var maketest = 0;
}
//По дате создания или изменения (по умолчанию создания)
try {
    var datetype = objArgs(5);
}
catch(e) {
    var datetype = 0;
}

//Логфайл
var logfilename = "dellog.txt";
var AbsolutePathToLogFile = ShowAbsolutePath(srvpath)+"\\"+logfilename

if (filemask == "*") {
    usere=0;
}
else {
    re = new RegExp(filemask+"$","i");
    usere=1;
};

if (maketest != 0) WScript.Echo("Маска: " + filemask +"\n"+"Срок хранения дней: " + timetosave+"\n"+"Путь: "+srvpath); //если тест

//список файлов соответствующих маске:
if (fso.FolderExists(srvpath)) {
    flist = ShowFolderFileList(srvpath);
}
else {
    if (maketest != 0) WScript.Echo("Указанный путь недоступен"); //если тест - вывести сообщение на экран
    WScript.Quit();
};
flistnew = new Array();
j=0;
if (usere == 1) {
    for (i = 0; i < flist.length; i++) {
        var path = new String(flist[i]);
        retest=re.test(path);
        if (retest) {
            flistnew[j] = path;
            j++;
        };
    };
}
else {
    for (i = 0; i < flist.length; i++) {
        flistnew[j] = new String(flist[i]);
        j++;
    };
};

//Проверка даты и удаление
for (i = 0; i < j; i++) {
    f = fso.GetFile(flistnew[i]);
    if (datetype == 1) {
        s = new Date(f.DateLastModified);
    }
    else {
        s = new Date(f.DateCreated);
    }
    yr = s.getYear();
    mo = s.getMonth()+1;
    dy = s.getDate();
    deltaday = DaysBetweenDateAndNow(yr, mo, dy);
    if (deltaday > timetosave) {
        if (flistnew[i] != AbsolutePathToLogFile) {
            if (maketest != 0) WScript.Echo("У файла: " + ShowFileName(flistnew[i]) + ",\n" +"созданного: " + s +",\n"
                + "прошел срок хранения. Текущее значение: " + deltaday); //если тест
            try {
                logdelstr = "Удален ";
                if (maketest == 0) delfiles(flistnew[i]); //если не тест
            }
            catch(e) {
                logdelstr = "Ошибка удаления ";
            }
            if (makelog != 0) {
                logfile = fso.OpenTextFile(AbsolutePathToLogFile, 8, true);
                logfile.WriteLine(logdelstr + TimeDemo(0) + " файл: " + ShowFileName(flistnew[i]));
                logfile.Close();
            }
            if (maketest != 0) WScript.Echo(logdelstr + TimeDemo(0) + " файл: " + ShowFileName(flistnew[i])); //если тест
        }
    }
}

//Функции
function TimeDemo(tims){
    var d, s = "";
    var c = ".";
    d = new Date();
    s += d.getDate() + c;
    if ((d.getMonth() + 1 - tims) < 1) {
        s += (d.getMonth() + 1 - tims +12) + c;
        s += (d.getYear()-1);
    }
    else {
        s += (d.getMonth() + 1 - tims) + c;
        s += d.getYear();
    };
    return(s);
}

function ShowFolderFileList(folderspec) {
    var f, f1, fc;
    farray = new Array();
    f = fso.GetFolder(folderspec);
    fc = new Enumerator(f.files);
    x = 0;
    for (; !fc.atEnd(); fc.moveNext()) {
        farray[x]= fc.item();
        x++;
    };
   return(farray);
}

function delfiles(name) {
    if (fso.FileExists(name)) {
	    fso.DeleteFile(name);
    };
}

function ShowFileName(filespec)
{
   var s = "";
   s += fso.GetBaseName(filespec)+"."+fso.GetExtensionName(filespec);
   return(s);
}

function ShowAbsolutePath(path)
{
   var s= "";
   s += fso.GetAbsolutePathName(path);
   return(s);
}

function DaysBetweenDateAndNow(yr, mo, dy){
   var d, r, t1, t2, t3;            //Declare variables.
   var MinMilli = 1000 * 60         //Initialize variables.
   var HrMilli = MinMilli * 60
   var DyMilli = HrMilli * 24
   t1 = Date.UTC(yr, mo - 1, dy)    //Get milliseconds since 1/1/1970.
   d = new Date();                  //Create Date object.
   t2 = d.getTime();                //Get current time.
   if (t2 >= t1) 
      t3 = t2 - t1;
   else
      t3 = t1 - t2;
   r = Math.round(t3 / DyMilli);
   return(r);                       //Return difference.
}

			

Что нового в этой версии:

Версия 1.3 (Птн Сен 3 2010):
- Добавлена возможность пропускать неудаляемые файлы.
Версия 1.2 (Втр Фев 2 2010):
- Добавлена возможность выбора типа даты (создания или изменения).
Версия 1.1 (Птн Окт 31 2008):
- Оптимизирован код.
Версия 1.0:
- Первый релиз.

Yandex.Metrika

Page modification: Птн Сен 10 16:48:35 MSD 2010
Используется Quanta+ 3.5.10 Under the GPL v2 license.