@smarisov666

Как решить проблему с переносом всех элементов?

function getFiles (dirPath, callback) {

    fs.readdir(dirPath, function (err, files) {
        if (err) return callback(err);

        var filePaths = [];
        async.eachSeries(files, function (fileName, eachCallback) {
            var filePath = path.join(dirPath, fileName);

            fs.stat(filePath, function (err, stat) {
                if (err) return eachCallback(err);

                if (stat.isDirectory()) {
                    getFiles(filePath, function (err, subDirFiles) {
                        if (err) return eachCallback(err);

                        filePaths = filePaths.concat(subDirFiles);
                        eachCallback(null);
                    });

                } else {
                    if (stat.isFile() && /YouTube_Accounts_\d+.txt$/.test(filePath)) {
                        filePaths.push(filePath);
                    }

                    eachCallback(null);
                }
            });
        }, function (err) {
            callback(err, filePaths);
        });

    });
}

function getDirectories(path) {
    return fs.readdirSync(path).filter(function (file) {
      return fs.statSync(path+'/'+file).isDirectory();
    });
}

fs.readFile("config.txt", "utf8", 
    function(error,data){
        if(error) throw error; 
        limit = data.match(/limit: (\d+)/)
        console.log('Set limit: ' + limit[1])
});


let dir_main; 

getFiles('./', function (err, files) {
    for (const item of getDirectories('./')) {
        if (item.startsWith('YT')) {
            dir_main = item
            for (const item of files) {
                const array = fs.readFileSync(item).toString().split("\n");
                for (const item of array) {
                    let check = item.match(/Account (.+) Subs: (\d+)/)
                    if (check != null || check != undefined) {
                        if (Number(check[2]) > Number(limit[1])) {
                            fska.move('./' + dir_main, './result/' + dir_main, err => {
                                if(err) return console.error(err);
                                console.log('success!');
                            });
                            fska.copy('./' + dir_main, './result/' + dir_main, err => {
                                if(err) return console.error(err);
                                console.log('success!');
                            });
                        }
                    }
                }
            }
        }
    }
});

Имею вот такой код, но проблема в том, что когда код доходит до этого момента
for (const item of array) {
                    let check = item.match(/Account (.+) Subs: (\d+)/)
                    if (check != null || check != undefined) {
                        if (Number(check[2]) > Number(limit[1])) {
                            fska.copy('./' + dir_main, './result/' + dir_main, err => {
                                if(err) return console.error(err);
                                console.log('success!');
                            });
                        }
                     }

Происходит перенос всех директорий, которые не подходят проверке
if (Number(check[2]) > Number(limit[1])) {
                            fska.copy('./' + dir_main, './result/' + dir_main, err => {
                                if(err) return console.error(err);
                                console.log('success!');
                            });
                        }

возможно я что-то делаю не так или же не правильно, может нужно использовать async?
так же заметил, что из-за того, что использую for в for происходит большая ошибка, но не особо понимаю, как это исправить?
7xOImuS.png
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы