为了账号安全,请及时绑定邮箱和手机立即绑定

C# 进程列表 Cmd 进程原名

C# 进程列表 Cmd 进程原名

C#
慕尼黑5688855 2022-12-31 13:37:59
我必须依次运行 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 文件的解决方案......
查看完整描述

2 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您可以使用此命令设置命令提示符窗口的标题


title My Running Batch

为命令窗口设置一个唯一的标题后,很容易找到是否有一个带有该标题的窗口


var list = Process.GetProcesses()

                  .Where(p => p.MainWindowTitle == "My Running Batch");


if(list.Count() == 0)

    ....


查看完整回答
反对 回复 2022-12-31
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您看不到特定批处理文件是否以这种方式运行 - 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!

 }

这样你就会知道发生了什么。


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信