bat-файл неправильно отрабатывает команду - установить количество потоков..

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
понадобилась функция увеличения кол-ва потоков через bat-файл..

upload_2016-6-16_13-49-57.png

создался батник, но при запуске его, кол-во потоков не увеличивается, а увеличивается кол-во выполнений.

upload_2016-6-16_13-52-6.png

объясните пож-ста, что делаю не так?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
максимум это другое а колличество у тебя выставилось
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
можешь попробывать

C#:
var searchName = "имя проекта";
var searchResult = false;
var tasks = ZennoPoster.TasksList;

foreach (var tsk in tasks)
{
    var doc = new System.Xml.XmlDocument();
    doc.LoadXml("<Task>" + tsk + "</Task>");
    var nameElement = doc.SelectSingleNode("Task/Name");
    if(nameElement == null) continue;
    var name = nameElement.InnerText;
    if (name == searchName)
    {
        var idElement = doc.SelectSingleNode("Task/Id");
        if (idElement == null) continue;
        var id = Guid.Parse(idElement.InnerText);
       
        var esElement = doc.SelectSingleNode("Task/ExecutionSettings");
        if (esElement == null) continue;
        // максимум потоков
        var threadsElement0 = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
        if (threadsElement0 == null) continue;
        threadsElement0.InnerText = "0";
        // сколько делать
        var threadsElement1 = doc.SelectSingleNode("Task/ExecutionSettings/NumberOfTries");
        if (threadsElement1 == null) continue;
        threadsElement1.InnerText = "0";
        // старт, стоп
        var threadsElement2 = doc.SelectSingleNode("Task/ExecutionSettings/Status");
        if (threadsElement2 == null) continue;
        threadsElement2.InnerText = "Stop";
       
        ZennoPoster.SetExecutionSettings(id, esElement.InnerXml);
        searchResult = true;
       
        System.Threading.Thread.Sleep(5000);
       
        // максимум потоков
        threadsElement0.InnerText = project.Variables["Priority"].Value;
        // сколько делать
        threadsElement1.InnerText = "-1";
       
        System.Threading.Thread.Sleep(5000);
       
        // старт, стоп
        threadsElement2.InnerText = "Perform";
       
        ZennoPoster.SetExecutionSettings(id, esElement.InnerXml);
        searchResult = true;
        break;
    }
}
if (!searchResult)
{
    project.SendInfoToLog("", "Неправильное имя проекта", true);
    return null;
}
 
  • Спасибо
Реакции: Apostol и Sergodjan

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
максимум это другое а колличество у тебя выставилось
кол-во выполнений выставляется командой Добавить попытки или Установить попытки (кстати, а в чем существенная разница?)..
а командой Установить кол-во потоков - именно максимум потоков должен выставиться, если по смыслу..
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
можешь попробывать

C#:
var searchName = "имя проекта";
var searchResult = false;
var tasks = ZennoPoster.TasksList;

foreach (var tsk in tasks)
{
    var doc = new System.Xml.XmlDocument();
    doc.LoadXml("<Task>" + tsk + "</Task>");
    var nameElement = doc.SelectSingleNode("Task/Name");
    if(nameElement == null) continue;
    var name = nameElement.InnerText;
    if (name == searchName)
    {
        var idElement = doc.SelectSingleNode("Task/Id");
        if (idElement == null) continue;
        var id = Guid.Parse(idElement.InnerText);
      
        var esElement = doc.SelectSingleNode("Task/ExecutionSettings");
        if (esElement == null) continue;
        // максимум потоков
        var threadsElement0 = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
        if (threadsElement0 == null) continue;
        threadsElement0.InnerText = "0";
        // сколько делать
        var threadsElement1 = doc.SelectSingleNode("Task/ExecutionSettings/NumberOfTries");
        if (threadsElement1 == null) continue;
        threadsElement1.InnerText = "0";
        // старт, стоп
        var threadsElement2 = doc.SelectSingleNode("Task/ExecutionSettings/Status");
        if (threadsElement2 == null) continue;
        threadsElement2.InnerText = "Stop";
      
        ZennoPoster.SetExecutionSettings(id, esElement.InnerXml);
        searchResult = true;
      
        System.Threading.Thread.Sleep(5000);
      
        // максимум потоков
        threadsElement0.InnerText = project.Variables["Priority"].Value;
        // сколько делать
        threadsElement1.InnerText = "-1";
      
        System.Threading.Thread.Sleep(5000);
      
        // старт, стоп
        threadsElement2.InnerText = "Perform";
      
        ZennoPoster.SetExecutionSettings(id, esElement.InnerXml);
        searchResult = true;
        break;
    }
}
if (!searchResult)
{
    project.SendInfoToLog("", "Неправильное имя проекта", true);
    return null;
}
ок, спасибо, попробую..
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
кол-во выставляется командой Добавить попытки или Установить попытки (кстати а в чем разница?)..
а тут - именно максимум потоков должно выставиться, если по смыслу..
например максимум 1000 а установить ты 100 хочешь, вот и отличие
но если максимум 1 а выставляешь 100 то будет всего один поток работать

код надо будет немного моддернезировать, так как он у меня работал в отдельном шабе для перезагрузки зенки, там сначала потоки останавливает все а потом устанавливает из входных настроек и старт
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
например максимум 1000 а установить ты 100 хочешь, вот и отличие
но если максимум 1 а выставляешь 100 то будет всего один поток работать
мне нужно стартовать шаблон в 1 поток, на 1 выполнение, потом должен сработать батник (из стартового 1-го выполнения) и добавить попыток выполнения и увеличить кол-во потоков..
то есть мне нужно при напримиер 1000 кол-ве попыток, установить работу в 5 потоков..
как это можно сделать?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
ну ты тогда максимум сразу выстави то колличество которое тебе надо например и из батника тогда увеличивай потоки

мой код работал так, выставлял максимум и колличество потоков бесконечность, например выставил 10 и при старте 10 сработали
 
  • Спасибо
Реакции: Sergodjan

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 362
Благодарностей
8 648
Баллы
113
ну ты тогда максимум сразу выстави то колличество которое тебе надо например и из батника тогда увеличивай потоки

мой код работал так, выставлял максимум и колличество потоков бесконечность, например выставил 10 и при старте 10 сработали
ок, понял..
наверное так и сделаю..
 

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