如何在C#表单项目中执行多个批处理命令

时间:2018-11-09 13:24:49

标签: c# windows batch-file

所以我想运行许多不同的批处理命令来执行不同的操作。目前,我的软件通过运行软件附带的.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#经验的学生

0 个答案:

没有答案