Итак, я хочу запустить кучу разных пакетных команд, которые делают разные вещи. В настоящее время мое программное обеспечение работает, запустив файл .bat, который входит в состав программного обеспечения, но я хочу просто удалить синтаксис из файла .bat и интегрировать его в свое программное обеспечение, чтобы при нажатии кнопки он запускал код напрямую и не запускался файл .bat.
Проблема в том, как мне запустить несколько пакетных команд, не только это, но и дождаться окончания выполнения каждой команды, как это делает пакетная команда?
В целом, я хочу выполнить пакетные команды, такие как остановка служб, удаление файлов реестра, удаление папок и программного обеспечения.
PS: это приложение C # Forms (поэтому я нажимаю одну кнопку, и все это выполняется)
В настоящее время у меня есть: с примерами
var proc1 = new ProcessStartInfo();
string stopservices =
"net stop \"serviceexample1\"" +
"net stop \"serviceexample2\"";
string deleteregistry =
"REG ADD HKEY_LOCAL_MACHINE\\SYSTEM\\EXAMPLE\\.. / t REG_DWORD / v Start / d 0x00000004 / f" +
"rem REG ADD HKEY_LOCAL_MACHINE\\SYSTEM\\EXAMPLE\\.. /t REG_SZ /v Start /d 5 /f";
string deletesoftware =
"MsiExec.exe /X{EXAMPLESOFTWARE} /quiet" +
"MsiExec.exe /X{EXAMPLESOFTWARE} /quiet";
string removedirectories =
"rmdir /s /q C:\\Program Files\\EXAMPLE" +
"rmdir /s /q C:\\Program Files(x86)\\EXAMPLE";
proc1.UseShellExecute = true;
proc1.WorkingDirectory = @"C:\Windows\System32";
proc1.FileName = @"C:\Windows\System32\cmd.exe";
proc1.Verb = "runas";
proc1.Arguments = "/c " + stopservices + deleteregistry + deletesoftware + removedirectories;
proc1.WindowStyle = ProcessWindowStyle.Normal;
System.Diagnostics.Process processwait = System.Diagnostics.Process.Start(proc1);
while (!processwait.HasExited && processwait.Responding)
{
System.Threading.Thread.Sleep(100);
}
Я пытался посмотреть в интернете, как запускать пакетный код напрямую из c #, и единственный способ найти это - использовать строку. Но я не думаю, что будет ждать окончания каждой команды, чтобы начать следующую, потому что строка - это просто строка текста, поэтому она будет принимать все сразу.
Я также хочу убедиться, что после успешного выполнения кода командная строка будет оставаться до тех пор, пока я не закрою ее (например, пауза в пакете).
Извините, если это простой вопрос, я студент с менее чем полугодовым опытом в c #