我必须依次运行 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)
....
梵蒂冈之花
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!
}
这样你就会知道发生了什么。
- 2 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消