Запуск команд в сmd из снипета

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Приветствую. Подскажите как можно выполнить команды сmd из снипета? Нужно выполнить следующие команды:
Код:
"%ZennoPosterCurrentPath%\TasksRunner.exe" -o SetThreads 10 -names "NotifierMultiacc"
"%ZennoPosterCurrentPath%\TasksRunner.exe" -o StartTask -names "NotifierMultiacc"
О возможности наполнения и запуска батника я в курсе. Этот способ не подходит.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Последнее редактирование:

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Похоже придётся разбирать/парсить xml, править в нём число и устанавливать обратно.
Да, я знаю этот метод. Просто он не очень удобный. Хотелось бы попроще. Ведь из батника если запустить команду срабатывает! Работает и тогда, когда руками команду вбиваю в cmd. А если из cmd из зенки - нет (
Вот код, может кому понадобится:
C#:
Guid taskId = Guid.Parse(project.TaskId);
string taskInfo = ZennoPoster.GetTaskInfo(taskId);
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + taskInfo + "</Task>");
System.Xml.XmlNode maxThreads = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
if (maxThreads != null)
{
    maxThreads.InnerText = (project.Variables["maxThreads"].Value).ToString();   
    System.Xml.XmlNode settingsNode = doc.SelectSingleNode("Task/ExecutionSettings");
    ZennoPoster.SetExecutionSettings(taskId, settingsNode.InnerXml);
}
 
Последнее редактирование:

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Но смотрите, если запустить этот код
C#:
project.SendInfoToLog("Start",true);
Guid taskId = Guid.Parse(project.TaskId);
string taskInfo = ZennoPoster.GetTaskInfo(taskId);
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml("<Task>" + taskInfo + "</Task>");
System.Xml.XmlNode maxThreads = doc.SelectSingleNode("Task/ExecutionSettings/LimitOfThreads");
if (maxThreads != null)
{
    maxThreads.InnerText = (project.Variables["maxThreads"].Value).ToString();   
    System.Xml.XmlNode settingsNode = doc.SelectSingleNode("Task/ExecutionSettings");
    ZennoPoster.SetExecutionSettings(taskId, settingsNode.InnerXml);
}
project.SendInfoToLog("End",true);
При установке 30 потоков (в переменной во входных настройках), когда запускаю проект в 1 поток, 1 попытка, у меня выполнилось первый раз раз 10, второй 27 раз, еще раз запустил, так получил выполнений 50! Что происходит-то?
52807
 

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
Подсказали как решить задачу в другом месте. Спасибо доброму человеку! Может кому-то понадобится:
C#:
string file = Environment.GetEnvironmentVariable("ZennoPosterCurrentPath") + @"\TasksRunner.exe";
string arguments = "-o SetThreads 10 -names AmazonFiles2FTP";

System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo();
//processStartInfo.CreateNoWindow = true;
processStartInfo.FileName = file;
processStartInfo.Arguments = arguments;
processStartInfo.UseShellExecute = false;
//processStartInfo.RedirectStandardOutput = true;
//processStartInfo.RedirectStandardError = true;

System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = processStartInfo;

process.Start();
 

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