Как открыть файл на компьютере по точному совпадению без учета регистра

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
Привет.

Нужна помощь, как организовать проект в Zennoposter.

В папке 3 файла с именами:

файл номер один.txt
файл номер.txt
Фай номер Два.txt

У меня в переменной в первом цикле хранится ключевое слово "файл номер" - мне надо взять именно этот файл, а не другие.

А берет сейчас первый попавшийся!

Помогите, пожалуйста. Как сделать, чтобы правильный файл брать?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
Привет.

Нужна помощь, как организовать проект в Zennoposter.

В папке 3 файла с именами:

файл номер один.txt
файл номер.txt
Фай номер Два.txt

У меня в переменной в первом цикле хранится ключевое слово "файл номер" - мне надо взять именно этот файл, а не другие.

А берет сейчас первый попавшийся!

Помогите, пожалуйста. Как сделать, чтобы правильный файл брать?
Можно пример ваших кубиков чем вы берете и как? И что в переменной? Скрины пожалуйста.
 
  • Спасибо
Реакции: AlexZI

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
Можно пример ваших кубиков чем вы берете и как? И что в переменной? Скрины пожалуйста.
Я неправильно делаю, т. к. не разбираюсь особо.

А как правильно делать? Какими кубиками?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
Я неправильно делаю, т. к. не разбираюсь особо.

А как правильно делать? Какими кубиками?
Напишите что вы хотите открыть и для чего? Если запуск программы физически, то это делать через:
70009
 
  • Спасибо
Реакции: AlexZI

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
#Есть файлы, которые нужны нам для того, чтобы от туда взять столбец и добавить его в список. Название файла, должно совпадать с переменной, но из-за того что Название файла и Переменная могут быть примерно такими:
[Файл один.csv / 'файл'; фаЙл двА.csv / 'файл двА' ] поиск не удаётся выполнить. Я вижу следующее решение: Преобразовать и название файла и переменную в маленкие символы и сопостовлять их.


1. Мы собираем csv файлы в директории в список. Для этого кубиком Директории-Получить список файлов. (прикрепил)
2. Ищем совпадение с помощью кода
C#:
var list = project.Lists["files_directory"];
var list = project.Lists["files_directory"];
string needle = project.Variables["get_header"].Value;
foreach(string data in list)
{
if(data.Contains(needle))
return data;
}
return "ничего не найдено";
Но поиск выдает и близкие результаты: [файл смотреть.csv; файл просмотреть.csv; смотреть.csv / 'смотреть'], а точный поиск работать, как я понимаю тоже не будет, так как есть и путь и формат .csv.
3. К сожалению, не знаю, как превести 1000 файлов к строчным символам, чтобы не было [фАйл.csv; ФАЙЛ смотреть.csv]
 

Вложения

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
#Есть файлы, которые нужны нам для того, чтобы от туда взять столбец и добавить его в список. Название файла, должно совпадать с переменной, но из-за того что Название файла и Переменная могут быть примерно такими:
[Файл один.csv / 'файл'; фаЙл двА.csv / 'файл двА' ] поиск не удаётся выполнить. Я вижу следующее решение: Преобразовать и название файла и переменную в маленкие символы и сопостовлять их.


1. Мы собираем csv файлы в директории в список. Для этого кубиком Директории-Получить список файлов. (прикрепил)
2. Ищем совпадение с помощью кода
C#:
var list = project.Lists["files_directory"];
var list = project.Lists["files_directory"];
string needle = project.Variables["get_header"].Value;
foreach(string data in list)
{
if(data.Contains(needle))
return data;
}
return "ничего не найдено";
Но поиск выдает и близкие результаты: [файл смотреть.csv; файл просмотреть.csv; смотреть.csv / 'смотреть'], а точный поиск работать, как я понимаю тоже не будет, так как есть и путь и формат .csv.
3. К сожалению, не знаю, как превести 1000 файлов к строчным символам, чтобы не было [фАйл.csv; ФАЙЛ смотреть.csv]
Попробуйте так, если код у вас работает без регистра. Хотя не уверен что с листом сработает конечно.
C#:
var list = project.Lists["files_directory"].Value.ToLower();
string needle = project.Variables["get_header"].Value.ToLower();
foreach(string data in list)
{
if(data.Contains(needle.ToLower()))
return data;
}
return "ничего не найдено";
 
  • Спасибо
Реакции: AlexZI

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
Добавление этого кода, вообще не даёт выполнять любые кубики в проекте. У вас последняя версия PM? Может вы подключаете какую-то внешнюю библиотеку для zenno?
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 433
Благодарностей
1 280
Баллы
113
Добавление этого кода, вообще не даёт выполнять любые кубики в проекте. У вас последняя версия PM? Может вы подключаете какую-то внешнюю библиотеку для zenno?
Ну как я и сказал, наверное лист нельзя так подставлять. Вот попробуйте так, если не подойдет, можете написать в телеграм, попробую по удаленке сделать более проще на кубиках, если верно *докопаюсь до сути...*
C#:
var list = project.Lists["files_directory"];
string needle = project.Variables["get_header"].Value.ToLower();
foreach(string data in list)
{
if(data.Contains(needle.ToLower()))
return data;
}
return "ничего не найдено";
 
  • Спасибо
Реакции: AlexZI

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 683
Баллы
113
Если нужно точное совпадение, то поиск в файлах делать совсем не обязательно. Надо сразу формировать путь к файлу. имя директории+имя файла+расширение.
C#:
string dir = project.Variables["dir"].Value.ToLower();
string needle = project.Variables["get_header"].Value.ToLower();
string path = (dir+needle+".csv").ToLower();
return path;
 
  • Спасибо
Реакции: AlexZI

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
Если нужно точное совпадение, то поиск в файлах делать совсем не обязательно. Надо сразу формировать путь к файлу. имя директории+имя файла+расширение.
C#:
string dir = project.Variables["dir"].Value.ToLower();
string needle = project.Variables["get_header"].Value.ToLower();
string path = (dir+needle+".csv").ToLower();
return path;
Благодарю, почти работает. Сам файл (таблица) не подгружается. То есть я задаю путь [wtf1] через переменную, он подтягивает файл. Показывает его в превью, но если нажать просмотр таблицы, то она пустая [wtf2]. Сами данные подгрузятся, если перезагрузить настройки таблицы (где-нибудь поставить галочку и потом убрать, к примеру распознавать данные).
 

Вложения

AlexZI

Client
Регистрация
02.05.2014
Сообщения
37
Благодарностей
3
Баллы
8
Благодарю, почти работает. Сам файл (таблица) не подгружается. То есть я задаю путь [wtf1] через переменную, он подтягивает файл. Показывает его в превью, но если нажать просмотр таблицы, то она пустая [wtf2]. Сами данные подгрузятся, если перезагрузить настройки таблицы (где-нибудь поставить галочку и потом убрать, к примеру распознавать данные).
Так, проблема решена, привязкой таблицы через экшн.
То есть путь к таблице не прописывается в настройках таблицы, там только ставится галочка "Загружать из файла".
Потом используется экшн Таблицы - Привязать к файлу
 

Вложения

  • Спасибо
Реакции: Koqpe

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 021
Благодарностей
1 383
Баллы
113
C#:
string needle = "";//тут получаем название файла из переменной
var table = project.Tables["tablica"];
string path = @"d:\";
foreach(string file in Directory.GetFiles(path))
    if(needle.Trim().ToLower() == Path.GetFileNameWithoutExtension(file).Trim().ToLower()){
        table.Bind(file);//привязка к таблице
        return "файл привязан к таблице";
    }
throw new Exception("искомый файл не найден");
 
  • Спасибо
Реакции: AlexZI

volna88

Client
Регистрация
07.02.2021
Сообщения
56
Благодарностей
2
Баллы
8
как можно работать внутри открывшейся программы?
 

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