У меня есть консольное приложение ThirdPartyApplications.exe, которое я должен запустить из службы Windows.
Консольное приложение дает мне ответы: OK, NOT OK и ERROR.
Мне нужно захватить эти ответы в моей службе Windows.
Я создал функцию
using (var p = new System.Diagnostics.Process())
{
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\ThirdPartyApplications.exe";
p.StartInfo.Arguments = "3";
p.Start();
string o = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
Как я могу захватить этот вывод?
EDIT
using (var p = new System.Diagnostics.Process())
{
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = @"C:\ThirdPartyBatch.bat";
p.StartInfo.Arguments = "file.zip -user.properties";
p.Start();
string o = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
Пакетный файл
@echo off
call run.bat %* 1>log\out.txt 2>log\err.txt
@echo code %ERRORLEVEL%
exit /B %ERRORLEVEL%
здесь, в моей переменной o, я не получаю сообщение "код 10"
если у меня есть
@ECHO off
ECHO Hello
PAUSE
Здесь я получаю сообщение «Hello», но если я изменяю командный файл
@ECHO off
call run.bat %* 1>log\out.txt 2>log\err.txt
ECHO Hello
PAUSE
Я не получаю сообщение "Hello"
Любая помощь?