Запуск exe с параметрами и ожиданием завершения работы

  • Автор темы Автор темы alekwuy
  • Дата начала Дата начала

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 632
Реакции
460
Баллы
83
Нужно запустить файл с параметрами soft.exe foder input.txt и дождаться завершения.
Нашел когда то сниппет на форуме но не помню где
но не шарю как дописать туда параметры и вместо C:\blahblah\1.exe задать имя переменной
Подскажите

Код:
Развернуть Свернуть Копировать
System.Diagnostics.ProcessStartInfo start =
      new System.Diagnostics.ProcessStartInfo();
start.FileName = @"C:\blahblah\1.exe";
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
var process = System.Diagnostics.Process.Start(start );
process.WaitForExit();
 
C#:
Развернуть Свернуть Копировать
var file = project.Variables["Переменная1"].Value; // заносим сюда данные из переменной "Переменная1"
System.Diagnostics.ProcessStartInfo start =
      new System.Diagnostics.ProcessStartInfo();
start.FileName = file;
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
var process = System.Diagnostics.Process.Start(start );
process.WaitForExit();
 
  • Оценить
Реакции: alekwuy
C#:
Развернуть Свернуть Копировать
var file = project.Variables["Переменная1"].Value; // заносим сюда данные из переменной "Переменная1"
System.Diagnostics.ProcessStartInfo start =
      new System.Diagnostics.ProcessStartInfo();
start.FileName = file;
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
var process = System.Diagnostics.Process.Start(start );
process.WaitForExit();

как всегда выручаешь, как параметры передать?
 
а если в Переменная1 записать строку soft.exe -dir -file.txt
не получается?

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

upload_2014-10-17_13-42-6.png
 
Последнее редактирование:
  • Оценить
Реакции: alekwuy
Код:
Развернуть Свернуть Копировать
System.Diagnostics.Process.Start("iexplore.exe", "www.google.ru");
 
  • Оценить
Реакции: alekwuy и Sergodjan
Код:
Развернуть Свернуть Копировать
System.Diagnostics.Process.Start("iexplore.exe", "www.google.ru");

можно подробнее?)



у меня сейчас вот такой код, но он не работает
Код:
Развернуть Свернуть Копировать
var file = project.Variables["path"].Value; // заносим сюда данные из переменной "Переменная1"
var args = project.Variables["args"].Value;
System.Diagnostics.ProcessStartInfo start =
      new System.Diagnostics.ProcessStartInfo();
start.FileName = file;
start.Arguments = args;
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
var process = System.Diagnostics.Process.Start(start );
process.WaitForExit();
 
перезагрузил ПМ - 1 раз выполнился проект, но cmd.exe не запустился..
а второй раз уже не запускается - подвисает что то..
 
  • Оценить
Реакции: alekwuy
Код:
Развернуть Свернуть Копировать
var file = project.Variables["path"].Value;
var args = project.Variables["args"].Value;
System.Diagnostics.Process.Start(file, args);

у меня вот так заработало..

upload_2014-10-17_14-29-46.png
 
  • Оценить
Реакции: alekwuy
у меня запускается но просто висит процесс в диспетчере
а сам софт не работает
Смотрите параметры, которые принимает программа. В коде выше должен запускаться браузер IE и открывать страницу www.google.ru.

Код, который вы используется тоже должен работать.
В переменной project.Variables["path"].Value нужно указать запускаемого имя приложения
project.Variables["args"].Value;
 
  • Оценить
Реакции: alekwuy
В переменную project.Variables["args"].Value - аргументы.
 
  • Оценить
Реакции: alekwuy
у меня софт лежит рядом с шаблоном
на питоне)

python.py
аргументы dir filename.txt

удалось запустить только в переменной полный путь к файлу
Код:
Развернуть Свернуть Копировать
var file = project.Variables["path"].Value;
var args = project.Variables["args"].Value;
System.Diagnostics.Process.Start(file, args);
 
у меня софт лежит рядом с шаблоном
на питоне)

python.py
аргументы dir filename.txt

удалось запустить только в переменной полный путь к файлу
Код:
Развернуть Свернуть Копировать
var file = project.Variables["path"].Value;
var args = project.Variables["args"].Value;
System.Diagnostics.Process.Start(file, args);

да, нужен полный путь, видимо в системной переменной путь к обработчику питона не указан..
 
  • Оценить
Реакции: alekwuy
не получается
запилил уже бантик
у в нем прописал запуск и параметры
если запускаю просто то работает
если запускаю через кубик тоже работает
но вот через код просто открывет и сразу закрывает
 
не получается
запилил уже бантик
у в нем прописал запуск и параметры
если запускаю просто то работает
если запускаю через кубик тоже работает
но вот через код просто открывет и сразу закрывает
может быть попробовать в конец батника команду more прописать?
или pause ..
 
  • Оценить
Реакции: alekwuy
так батник работает
если его запускать без зенно или запускать с помощью "запуск программы" то все работает
но нужно подождать пока он закроется сам(
 
Последнее редактирование:
скрипт на питоне не может найти файлы потому что они лежат рядом с ним
а выполняется все из другой папки
как то так
2vT08l2.png
 
Нашел ошибку почему то бантики запускаются отсюда
C:\Program Files (x86)\ZennoLab\ZennoPoster Pro\Progs
потому что родительский процесс base.exe там находится

Код:
Развернуть Свернуть Копировать
var process = new System.Diagnostics.Process {
   StartInfo = new System.Diagnostics.ProcessStartInfo { 
        UseShellExecute = false,
        RedirectStandardOutput = true,   
        RedirectStandardError = true,
        RedirectStandardInput = true,
        CreateNoWindow = true,
        FileName = "cmd.exe",
        WorkingDirectory = project.Directory+" // рабочая_папка",
        Arguments = "/c echo hellow world" // аргументы
    }
};

process.Start();
process.WaitForExit();

string output = process.StandardOutput.ReadToEnd();

process.Close();
process.Dispose();
 
с помощью костылей сделал
потому что родительский процесс base.exe там находится

Код:
Развернуть Свернуть Копировать
var process = new System.Diagnostics.Process {
   StartInfo = new System.Diagnostics.ProcessStartInfo {
        UseShellExecute = false,
        RedirectStandardOutput = true,  
        RedirectStandardError = true,
        RedirectStandardInput = true,
        CreateNoWindow = true,
        FileName = "cmd.exe",
        WorkingDirectory = project.Directory+" // рабочая_папка",
        Arguments = "/c echo hellow world" // аргументы
    }
};

process.Start();
process.WaitForExit();

string output = process.StandardOutput.ReadToEnd();

process.Close();
process.Dispose();

СПАСИБО!
а можешь все данные сделать переменными
папку
софт который нужно запустить и аргументы?
 
FileName = project.Variables["executable"].Value,
WorkingDirectory = project.Variables["workdir"].Value,
Arguments = project.Variables["args"].Value
 
  • Оценить
Реакции: alekwuy
команда должна выглядеть так "cmd.exe /c soft.bat soft.py"
 
  • Оценить
Реакции: alekwuy
  • Оценить
Реакции: alekwuy

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