Помогите переделать скрипт
Есть у меня вот этот скрипт, удаляет старые файлы в указанной папке со многими функциями. Подскажите как сделать так чтобы он удалял еще и файлы содержащиеся в подпапках.
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. } |
во-первых, вы ошиблись разделом.
это не ваш скрипт, и вы не имеете права его помещать в раздел "Ваши сайты и скрипты", так как не приложили ни малейших усилий к его написанию. Перенес тему в "Общие" Во-вторых, с вашей постановкой вопроса, вам следует обратится в раздел "Работа" Даю шанс на исправление. Если вы не собираетесь прикладывать ни малейших усилий к выполнению вашей задачи, перенесу тему в раздел "Работа" А усилия нужны минимальные. во-первых ответ уже содержится в коде. во-вторых, гугл все еще работает |
Цитата:
|
Часовой пояс GMT +3, время: 22:00. |