C# 如何通过C代码启动BAT文件

C# 如何通过C代码启动BAT文件,c#,.net,C#,.net,我想通过使用C代码执行一个BAT文件 我尝试使用以下代码 Process aProcess = new Process(); aProcess = Process.Start(@"E:\IMP_DATA\PRC_Helper_uTest.bat"); aProcess.WaitForExit(24000); aProcess.Close(); 它启动批处理文件,但下一秒就停止了 我什么也看不见 有人能帮我解决这个问题吗 更新 实际上,我想启动一个新的命令提示符,并在新创建的命令提示符上

我想通过使用C代码执行一个BAT文件

我尝试使用以下代码

 Process aProcess = new Process();
 aProcess = Process.Start(@"E:\IMP_DATA\PRC_Helper_uTest.bat");
 aProcess.WaitForExit(24000);
 aProcess.Close();
它启动批处理文件,但下一秒就停止了

我什么也看不见

有人能帮我解决这个问题吗

更新

实际上,我想启动一个新的命令提示符,并在新创建的命令提示符上运行一个批处理文件


如何实现这一点?

在.bat文件末尾添加暂停?

以下是一些可能会产生影响的代码,请使用进程设置为不启动shell。UseShellExecute=false;然后使用

 aProcess.RedirectStandardError = true;
 aProcess.RedirectStandardOutput = true;
 string Results = aProcess.StandardOutput.ReadToEnd();

这将返回批处理文件将显示的输出

执行批处理文件后,是否希望命令提示符保持打开状态?如果是这样的话,那么以批处理文件作为参数启动cmd.exe,否则只需在批处理文件的末尾添加一个pause命令,正如前面所说的那样


在更新中编写时,您希望启动一个新的命令提示符,并在此提示符下启动批处理文件。但你所做的是启动一个批处理文件

因此,要使其正常工作,启动一个命令提示符,执行批处理文件而不是执行批处理文件,有时它可能非常简单;-

例如:

private void StartCmdWithBatch(string nameOfBatchFile)
{
    if (!File.Exists(nameOfBatchFile))
        throw new FileNotFoundException(nameOfBatchFile);

    string parameters = String.Format("/k \"{0}\"", nameOfBatchFile);
    System.Diagnostics.Process.Start("cmd", parameters);
}

有关命令提示选项的更多信息,请通过cmd/?

获取。我使用了这个bat文件,其中包含两个C代码:

@echo off

color 0a 

mode 1000

:a

echo %random% %random% %random% %random% %random% %random% %random% %random% 

goto a


Process aProcess = new Process();

aProcess = Process.Start(@"E:\IMP_DATA\PRC_Helper_uTest.bat");

aProcess.WaitForExit(24000);

aProcess.Close();


aProcess.RedirectStandardError = true;

aProcess.RedirectStandardOutput = true;

string Results = aProcess.StandardOutput.ReadToEnd();

它工作得非常好。

如果不启动shell,我根本看不到批处理将如何加载。该过程仍在后台执行,您将看不到输出,这就是使用重定向的原因。这在自动化过程中很有用。但它是一个批处理文件,所以操作系统不能直接执行它,就像它执行EXE一样。相反,我们启动shell并允许它解释批处理,对吗?将启动cmd.exe,并在隐藏时将输出重定向到StandardOutput流。**实际上,我想启动一个新命令promt,并想在新创建的命令promt上运行批处理文件**这是我添加的,但当我更新我的问题时,我必须通过bat文件启动一个新的命令promt,并在新创建的命令promt上运行一个命令。但是发生了什么,程序启动了一个新命令,而另一个命令却在.NET单元上运行。请参阅代码和bat文件:bat文件X:cd\syngoBASE\i586-WinNT5.01\Debug\DoBin\bin syngo.Common.Starter.exe-shell dir暂停代码进程aProcess=new进程;过程=过程。Start@E:\IMP\u DATA\Test.bat;a进程。WaitForExit24000;一个进程。关闭;Nikhil,如果批处理文件启动另一个进程,第一个进程可能会在第二个进程完成之前返回。