猿问

C# 进程列表 Cmd 进程原名

我必须依次运行 control.bat 文件和 server.bat 文件(顺便说一句,实际上是 5 个文件)。这些是我的 ERP 服务器启动程序。某些原因(例如 windows 更新重新启动服务器)我正在尝试编写一个 windows 服务来控制 control.bat 和 server.bat 是否正常工作。如果其中至少一个不起作用。它将终止所有 bat 会话并使用 C# 重新运行所有会话。我试过如下。


Process[] processlist = Process.GetProcesses();

foreach (var item in processlist)

{

      Process[] pname = Process.GetProcessesByName("control.bat");//there is no processname like control but cmd

      if (pname.Length == 0)

      {

                this.killAll();

                break;


      }       

}   

但是当我控制进程列表时,没有 control.bat 或 server.bat...但是 cmd 是。有没有找到从 control.bat、server.bat 运行的 cmd 文件的解决方案......


慕尼黑5688855
浏览 104回答 2
2回答

神不在的星期二

您可以使用此命令设置命令提示符窗口的标题title My Running Batch为命令窗口设置一个唯一的标题后,很容易找到是否有一个带有该标题的窗口var list = Process.GetProcesses()                  .Where(p => p.MainWindowTitle == "My Running Batch");if(list.Count() == 0)    ....

梵蒂冈之花

您看不到特定批处理文件是否以这种方式运行 - bat 文件只是 cmd.exe 进程正在执行的脚本。如果您从代码启动 bat 文件,您可以通过检查进程是否启动来执行此操作:using System.Diagnostics;Process proc = new Process();proc.StartInfo.FileName = "control.bat";if (proc.Start()) { //All good! }else { //Oh no! it's not running! }这样你就会知道发生了什么。
随时随地看视频慕课网APP
我要回答