C# 如何通过C代码启动BAT文件
我想通过使用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(); 它启动批处理文件,但下一秒就停止了 我什么也看不见 有人能帮我解决这个问题吗 更新 实际上,我想启动一个新的命令提示符,并在新创建的命令提示符上
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,如果批处理文件启动另一个进程,第一个进程可能会在第二个进程完成之前返回。