Поиск 1 значения в 10 файлах

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Привет друзья!
Никак не могу придумать как реализовать в постере одну задачку.

Задача в следующем:
Есть 10 txt-файлов содержащих цифры, записанные в столбик. Некоторые числа в файлах могут совпадать.
Нужно проверить каждое число на его наличие во всех файлах. Если содержится в 7 и более файлах то не трогать, если в меньшем количестве файлов то удалить это число из всех файлов.

Буду признателен за наводку как это реализовать. спасибо.
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Код:
var nomber = project.Variables["Nom"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
String[] subDirectories;
subDirectories = System.IO.Directory.GetFiles(@"D:\новый папка"); //путь к папке с файлами
int count = subDirectories.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(subDirectories[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}

if (check>7)
{
    return "не трогать";
}
return "потрогать";
 

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Спасибо что отозвались! Буду думать теперь как это прикрутить) Проблема в том что каждый файл лежит в отдельной папке..)
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Можно тогда добавить еще один список, в который до выполнения кода вкладываете все свои пути к файлам. И в коде вместо массива использовать этот список. В остальном всё так же.
 

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Код:
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
String[] file_dirs;
int count = file_dirs.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";
У меня получилось слепить вот это, но оно не работает) Что не так?

Сильно ногами не пинайте, в программировании я ноль
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Код:
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
String[] file_dirs;
int count = file_dirs.Length;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";
У меня получилось слепить вот это, но оно не работает) Что не так?

Сильно ногами не пинайте, в программировании я ноль
Так попробуйте
Код:
var nomber = project.Variables["ID"].Value; //Переменная, которую ищем в списках
var list = project.Lists["list"]; //создать временный список в проекте
var file_dirs = project.Lists["files"]; //список с полными путями к файлам
int count = file_dirs.Count;
int check = 0;
for (int i = 0; i < count; i++)
{
    list.Bind(file_dirs[i]);
    if(list.Contains(nomber))
    {
        check++;
    }
}
if (check>1)
{
    return "не трогать";
}
return "потрогать";
 

bstshell

Client
Регистрация
03.06.2015
Сообщения
56
Благодарностей
4
Баллы
8
Этот код берет данные только из 1 файла...
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Наводку, как вы и просили вам дали верную.
Перед этим стандартными экшенами можно в цикле привязывать по очереди все файлы к списку1, добавлять все данные к списку2
Потом список2 уже использовать в сниппете
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)