Alex_Piggy
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Код: var initFolder = "D:\\Downloads\\2019_11_29" var regex = /-\d{4}\.pdf$/ var fso = new ActiveXObject("Scripting.FileSystemObject"); var filelist = {}; var duplist = {}; var oLog = fso.CreateTextFile("duplicates.log", true); recurseFiles (initFolder); for (dd in filelist) { if (filelist[dd].length>2) { for (i=filelist[dd].length-1; i>0; i--) { aTmp=[]; if (filelist[dd][i]) for (j=i-1;j>=0;j--) { if (filelist[dd][j]) if (fso.GetFile(filelist[dd][i]).Size == fso.GetFile(filelist[dd][j]).Size) { aTmp.push(filelist[dd][j]); delete filelist[dd][j]; } } if (aTmp.length > 0) { aTmp.push(filelist[dd][i]); addElem(duplist, dd, aTmp.sort().join('\t==\t')); } } } } for (dd in duplist) { oLog.WriteLine(dd + '\r\n\t' + duplist[dd].join('\r\n\t')); } function recurseFiles (vFolder) { var oBFolder = fso.GetFolder(vFolder); var eFiles = new Enumerator (oBFolder.Files); var eFolders = new Enumerator (oBFolder.SubFolders); for (;!eFiles.atEnd();eFiles.moveNext()) { var match = eFiles.item().Name.match(regex); if (match == null || match.length == 1) { addElem(filelist, "unknown", eFiles.item().Path); } else { for (var i=1; i < match.length; i++) {addElem(filelist, match[i],eFiles.item().Path);} } } for (;!eFolders.atEnd();eFolders.moveNext()) {recurseFiles(eFolders.item().Path);} } function addElem (oObj, vName, vData) { if (oObj[vName]==null) oObj[vName]=[]; oObj[vName].push(vData); } |
|