Есть у меня вот этот скрипт, удаляет старые файлы в указанной папке со многими функциями. Подскажите как сделать так чтобы он удалял еще и файлы содержащиеся в подпапках.
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.
}