1 (изменено: over4track, 2014-09-24 21:42:53)

Тема: JS: Удаление каталогов в зависимости от времени модификации

Помогите реализовать код для удаление каталогов в зависимости от времени модификации

2

Re: JS: Удаление каталогов в зависимости от времени модификации

over4track, не Вы первый и, должно быть, не Вы последний... - пожалуйста, заключайте код в пару тэгов code, во-вторых, подобная тема как-то поднималась уже на форуме, но если ничего не найдете через поиск, то примерный вариант:

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

with (WScript.Arguments.Named) {
  if (length != 2) {
    WScript.echo(WScript.ScriptName + " /d:[path] /n:[days]");
    WScript.echo("  /d:[path] - a source folder");
    WScript.echo("  /n:[days] - days expired");
    WScript.Quit(1);
  }

  try {
    DeleteOlderThanX(Item("d"), Item("n"));
  }
  catch (e) {
    WScript.echo(e.message + ".");
  }
}

function DateDiff(fileName) {
  var day = new Date(fso.GetFile(fileName).DateLastModified),
      now = new Date(), mil = 1 / (1000 * 60 * 60 * 24),
      res = (now - day) * mil;
  return(Math.floor(res));
}

function DeleteOlderThanX(dirName, dateExpire) {
  with (fso.GetFolder(dirName)) {
    var eFiles = new Enumerator(Files),
        eSubs = new Enumerator(Subfolders),
        itm;

    for (; !eFiles.atEnd(); eFiles.moveNext()) {
      itm = eFiles.item();

      if (DateDiff(itm) > dateExpire) {
        WScript.echo(itm.Path + ".....deleted.");
        itm.Attributes = 0;
        itm.Delete();
      }
    }

    for (; !eSubs.atEnd(); eSubs.moveNext()) {
      itm = eSubs.item();

      DeleteOlderThanX(itm.Path, dateExpire);
      WScript.echo(itm.Path + ".....deleted.");
      if (itm.Size == 0) {
        itm.Attributes = 0;
        itm.Delete();
      }
    }
  }
}