【问题标题】:Kill a running batch file from C#从 C# 中终止正在运行的批处理文件
【发布时间】:2013-12-30 06:11:24
【问题描述】:

有没有办法杀死不是从 C# 代码启动的批处理进程以从 C# 代码中杀死。 即我有 start.bat 正在运行,我想在 WPF 应用程序启动时杀死它。这可能吗?? WPF 应仅终止 start.at 而不会终止其他批处理运行。

【问题讨论】:

    标签: c# batch-file kill-process


    【解决方案1】:
     int processID = ... 
     // you also can use    Process.GetProcessesByName(....) to find the proicessID - or the batch process
    
     //Later when you need to kill the process...
     Process pToKill = Process.GetProcessById(processID);
     pToKill.Kill();
    

    【讨论】:

    • -1:最有趣的魔法不见了——人们可以很容易地找到运行该 BAT/CMD 文件的 CMD.exe,但是如何只停止批处理文件,而不是它的 CMD?跨度>
    • 阿列克谢我该怎么做?
    • 我没有进程 ID,该进程是从 c# 代码外部启动的。
    • @Khushi - 如果“start.bat”以交互方式启动(通过用户在命令提示符下键入“start.bat”),可能必须发送 Ctrl+C 来更正 CMD.exe(我猜,从来没有这样做)。如果“start.bat”是通过Process.Start(或任何其他启动新CMD的方式)启动的,那么Knuckle-Dragger(+1)的回答是一个很好的起点。
    【解决方案2】:

    从 powershell 我发现 Start.bat 的 PID 是这样的。

    (gwmi win32_process | where {$_.commandline -match "START.BAT"} | select processID).processID
    

    从 C# 调用 powershell 或直接联系 WMI,如果您查看 Win32_Process 命令行和 processID 属性很容易找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多