Массовая замена путей в списках.

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Доброго дня. Тема косвенно затрагивает вопрос с поиском по спискам, которая рассмотрена здесь.

Есть папка, в ней около 100 текстовых файлов, которые в ZP привязаны к спискам в нескольких проектах. После того, как я измению имя папки с текстовыми файлами, как мне изменить пути в списках ZP по всем проектам? CTRL + F - находит только пути используемые в экшенах, на списки он не реагирует.

Может быть есть решение на великом C#? Например, указываем через запятую имена всех списков в которых нужно сменить путь к файлу, задаем новый путь корневой папки с текстовыми файлами и запускаем C#.
 

Вложения

Последнее редактирование:

LiMe

Client
Регистрация
10.12.2015
Сообщения
621
Благодарностей
341
Баллы
63
Доброго дня. Тема косвенно затрагивает вопрос с поиском по спискам, которая рассмотрена здесь.

Есть папка, в ней около 100 текстовых файлов, которые в ZP привязаны к спискам в нескольких проектах. После того, как я измению имя папки с текстовыми файлами, как мне изменить пути в списках ZP по всем проектам? CTRL + F - находит только пути используемые в экшенах, на списки он не реагирует.

Может быть есть решение на великом C#? Например, указываем через запятую имена всех списков в которых нужно сменить путь к файлу, задаем новый путь корневой папки с текстовыми файлами и запускаем C#.
Для того чтобы такого не было, нужно предварительно класть путь к файлам через переменные, т.е. у вас есть переменная путь к папке, и есть другая переменное в которой имя файла. Это все решает вашу головную боль в будущем.
 
  • Спасибо
Реакции: djaga и material

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Для того чтобы такого не было, нужно предварительно класть путь к файлам через переменные, т.е. у вас есть переменная путь к папке, и есть другая переменное в которой имя файла. Это все решает вашу головную боль в будущем.
Даже можно сделать общий список, в который прописать все пути, и вытягивать их в нужные переменные в нужное время. Получится такой список-хаб, который в любой момент можно будет редактировать. Крепкая мысль, Спасибо!

Если бы знал где постелить соломку, обязательно бы её постелил. Что делать, когда уже дело сделано и списки составлены обычным дедовским способом? Был бы поиск по спискам или содержимому их настроек, изменил бы вручную в каждом списке, найдя их по маске старого пути, но я их даже найти не могу в общем меню списков.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
746
Баллы
113
93051
Тут не чего не должно быть, можно обойтись одним списком,
Так должно быть,
1654942707011.png
Так делай, предварительно перед этим обработка переменных, установи название нужного списка.
1654942800266.png
А в выходных настройках лучше написать так, не путь к файлу, а именно название файла, допустим у тебя один и тот же шаблон работает на двух машинах, а пути разные.
93054
 
  • Спасибо
Реакции: djaga и material

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 794
Благодарностей
2 466
Баллы
113
Доброго дня. Тема косвенно затрагивает вопрос с поиском по спискам, которая рассмотрена здесь.

Есть папка, в ней около 100 текстовых файлов, которые в ZP привязаны к спискам в нескольких проектах. После того, как я измению имя папки с текстовыми файлами, как мне изменить пути в списках ZP по всем проектам? CTRL + F - находит только пути используемые в экшенах, на списки он не реагирует.

Может быть есть решение на великом C#? Например, указываем через запятую имена всех списков в которых нужно сменить путь к файлу, задаем новый путь корневой папки с текстовыми файлами и запускаем C#.
C#:
string newdir = @"C:\Users\User\Desktop\temp"; // Новая папка
string[] lists = new[]{ // Пачка списков, которые есть в проекте
    "list"
};

foreach(string name in lists) {

    string path = project.Lists[name].GetType().GetMethod("get_BindedFile").Invoke(project.Lists[name],new Object[]{}).ToString(); // Получили путь к файлу, к которому привязан список
    project.SendInfoToLog(path);
    if(string.IsNullOrEmpty(path)) continue; // Пропускаем, список не привязан к файлу
    string file = Path.GetFileName(path); // Получили имя файла который привязан к списку
    string newpath = Path.Combine(newdir, file); // Формируем новый путь   
    project.SendInfoToLog(newpath);
    project.Lists[name].GetType().GetMethod("set_BindedFile").Invoke(project.Lists[name],new Object[]{newpath}); // Привязываем к другому файлу
    path = project.Lists[name].GetType().GetMethod("get_BindedFile").Invoke(project.Lists[name],new Object[]{}).ToString(); // Перепроверяем путь повторно
    project.SendInfoToLog(path);
}
Спасибо можно отправлять legorange за способ работы описанный тут :-)
Но, использовать только при создании шаблонов - не рекомендую привязывать так файлы к спискам в рабочих проектах (мало ли как это себя ведёт в процессе).
 
  • Спасибо
Реакции: material, LiMe и Ysocnet

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
C#:
string newdir = @"C:\Users\User\Desktop\temp"; // Новая папка
string[] lists = new[]{ // Пачка списков, которые есть в проекте
    "list"
};

foreach(string name in lists) {

    string path = project.Lists[name].GetType().GetMethod("get_BindedFile").Invoke(project.Lists[name],new Object[]{}).ToString(); // Получили путь к файлу, к которому привязан список
    project.SendInfoToLog(path);
    if(string.IsNullOrEmpty(path)) continue; // Пропускаем, список не привязан к файлу
    string file = Path.GetFileName(path); // Получили имя файла который привязан к списку
    string newpath = Path.Combine(newdir, file); // Формируем новый путь  
    project.SendInfoToLog(newpath);
    project.Lists[name].GetType().GetMethod("set_BindedFile").Invoke(project.Lists[name],new Object[]{newpath}); // Привязываем к другому файлу
    path = project.Lists[name].GetType().GetMethod("get_BindedFile").Invoke(project.Lists[name],new Object[]{}).ToString(); // Перепроверяем путь повторно
    project.SendInfoToLog(path);
}
Спасибо можно отправлять legorange за способ работы описанный тут :-)
Но, использовать только при создании шаблонов - не рекомендую привязывать так файлы к спискам в рабочих проектах (мало ли как это себя ведёт в процессе).
Спасибо Вам и legorange. Решил вопрос дедовским методом, вручную, так как списки дело важное и если где-то спрячется ошибка о которой неизвестно, это очень плохо может сказаться на результате и благо, если проблема будет явной и устраниться быстро, а если нет... C# в любом случае сохраню, вдруг кагда-то пригодиться.
 

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Посмотреть вложение 93051
Тут не чего не должно быть, можно обойтись одним списком,
Так должно быть,
Посмотреть вложение 93052
Так делай, предварительно перед этим обработка переменных, установи название нужного списка.
Посмотреть вложение 93053
А в выходных настройках лучше написать так, не путь к файлу, а именно название файла, допустим у тебя один и тот же шаблон работает на двух машинах, а пути разные.
Посмотреть вложение 93054
Функционала "Привязать к файлу" почему-то опасаюсь, когда-то читал форум, встретил тему, что он как-то некорректно работает. Возможно так оно и было, возможно проблема была и её решили, но чёткого подтверждения того или иного утверждения - я не нашел и работаю со списками по старинке.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
746
Баллы
113
Функционала "Привязать к файлу" почему-то опасаюсь, когда-то читал форум, встретил тему, что он как-то некорректно работает. Возможно так оно и было, возможно проблема была и её решили, но чёткого подтверждения того или иного утверждения - я не нашел и работаю со списками по старинке.
Вы, наверно, спутали, все как раз на оборот. Я года два назад, когда с ZP познакомился, и вот так как ты делал, и мне тут показали как правильно.
 

material

Client
Регистрация
23.03.2021
Сообщения
329
Благодарностей
124
Баллы
43
Вы, наверно, спутали, все как раз на оборот. Я года два назад, когда с ZP познакомился, и вот так как ты делал, и мне тут показали как правильно.
Это не о вашей теме речь (наверное), даже не помню, как она называлась и там человек поднимал вопрос о том, что "Привязка к файлу", как то странно отрабатывает, они с администратором или с модератором долго общались, но так и не пришли к консенсусу. Поэтому у меня и закрепилась мысль в голове, что пока функцию "Привязать к файлу" не трогаю, и как-нибудь потом изучу вопрос.

Не помню уже, что за тема, всё не упомнить, лучше у вас спрошу, всё ли хорошо с функцией "Привязать к файлу" и были ли хоть раз, какие-либо странности с ней?
 

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