所以我已经知道如何像这样并行运行两个批处理命令
start /b cmd /c command1
start /b cmd /c command2
现在,我想创建一个执行相同功能的Windows服务,但是我认为我不能仅创建一个直接运行这两个命令的服务,因为停止该服务不会杀死该服务的后台进程创建。
我要提供的服务需要并行运行command1
和command2
(首先触发command1
,然后在command2
运行时触发command1
)并且当服务停止时,两个(所有)关联进程也应停止。
我还希望避免编写一些Python / C#程序或其他东西,如果可能的话,直接从Windows / Batch / Powershell脚本直接执行。
答案 0 :(得分:0)
您绝对可以从Window Service中执行所需的操作,而不必使用.NET中的start命令打开控制台窗口,而可以使用Process
和ProcessStartInfo
类,请参见此处:>
通过这种方式,您可以保留对您启动的Process
对象的引用,而在服务停止时,您只需杀死两个进程即可。
答案 1 :(得分:0)
不能100%地确定为什么要提供服务以及需要做什么,但是从您的评论中,以下方法可能有意义。
在Windows中创建计划任务以启动,停止,在系统启动时运行,以及在SYSTEM(或任何其他)上下文中运行。您可以使用PowerShell自动创建计划任务。
使用PowerShell作业在PowerShell中进行并发处理。