python 批量终止进程exe

cpp 复制代码
import os
import sys
import subprocess
import platform

def kill_process_by_name(process_name):
    """
    根据进程名称杀死进程
    
    Args:
        process_name: 进程名称,例如 'notepad.exe' 或 'chrome.exe'
    
    Returns:
        bool: 成功返回True,失败返回False
    """
    system = platform.system().lower()
    
    try:
        if system == "windows":
            # Windows系统使用taskkill命令
            # /f 强制终止,/im 指定镜像名称
            cmd = f'taskkill /f /im {process_name}'
            result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
            
            if result.returncode == 0:
                print(f"成功终止进程: {process_name}")
                return True
            else:
                print(f"终止进程失败: {process_name}")
                print(f"错误信息: {result.stderr}")
                return False
                
        elif system == "linux" or system == "darwin":  # darwin是macOS
            # Linux/Mac系统使用pkill命令
            cmd = f'pkill -f {process_name}'
            result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
            
            if result.returncode == 0:
                print(f"成功终止进程: {process_name}")
                return True
            else:
                print(f"终止进程失败: {process_name}")
                print(f"错误信息: {result.stderr}")
                return False
        else:
            print(f"不支持的操作系统: {system}")
            return False
            
    except Exception as e:
        print(f"执行出错: {e}")
        return False

def kill_processes_by_names(process_names):
    """
    根据多个进程名称列表杀死进程
    
    Args:
        process_names: 进程名称列表
        
    Returns:
        dict: 每个进程的执行结果
    """
    results = {}
    for process_name in process_names:
        results[process_name] = kill_process_by_name(process_name)
    return results

def get_running_processes():
    """
    获取当前运行的所有进程名称(仅限Windows)
    """
    system = platform.system().lower()
    
    if system == "windows":
        try:
            cmd = 'tasklist'
            result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
            if result.returncode == 0:
                processes = []
                lines = result.stdout.split('\n')
                # 跳过标题行
                for line in lines[3:]:
                    if line.strip():
                        # 提取进程名称
                        process_name = line.split()[0]
                        processes.append(process_name)
                return processes
            else:
                print(f"获取进程列表失败: {result.stderr}")
                return []
        except Exception as e:
            print(f"获取进程列表出错: {e}")
            return []
    else:
        print("此功能目前仅支持Windows系统")
        return []

def interactive_kill():
    """
    交互式杀死进程
    """
    print("=== 进程终止工具 ===")
    
    system = platform.system().lower()
    if system == "windows":
        print("\n当前运行的进程:")
        processes = get_running_processes()
        if processes:
            # 显示前20个进程作为示例
            for i, proc in enumerate(processes[:20], 1):
                print(f"{i}. {proc}")
            if len(processes) > 20:
                print(f"... 还有 {len(processes)-20} 个进程")
        
        print("\n请输入要终止的进程名称(例如:notepad.exe)")
        print("提示:可以输入多个进程名称,用逗号分隔")
        
    else:
        print("请输入要终止的进程名称(例如:firefox)")
        print("提示:可以输入多个进程名称,用逗号分隔")
    
    user_input = input("\n进程名称: ").strip()
    
    if not user_input:
        print("未输入进程名称")
        return
    
    # 支持多个进程名称
    process_names = [name.strip() for name in user_input.split(',')]
    
    if len(process_names) == 1:
        kill_process_by_name(process_names[0])
    else:
        results = kill_processes_by_names(process_names)
        
        print("\n执行结果:")
        for name, success in results.items():
            status = "✓ 成功" if success else "✗ 失败"
            print(f"{name}: {status}")

def kill_range_processes(start=1, end=100):
    """
    批量杀死指定范围的进程(例如:1.exe 到 100.exe)
    
    Args:
        start: 起始编号
        end: 结束编号
    """
    process_names = []
    for index in range(start, end + 1):
        single_process_name = str(index) + ".exe"
        process_names.append(single_process_name)
    
    print(f"准备终止进程: {process_names[:10]}..." if len(process_names) > 10 else process_names)
    print(f"共 {len(process_names)} 个进程")
    
    # 询问确认
    confirm = input(f"\n确认要终止这 {len(process_names)} 个进程吗?(y/n): ")
    if confirm.lower() == 'y':
        print("\n开始终止进程...")
        results = kill_processes_by_names(process_names)
        
        # 统计结果
        success_count = sum(1 for success in results.values() if success)
        fail_count = len(results) - success_count
        
        print(f"\n执行完成!成功: {success_count}, 失败: {fail_count}")
    else:
        print("操作已取消")

def main():
    """
    主函数,支持命令行参数和交互模式
    """
    # 方式1:直接批量终止 1.exe 到 100.exe
    # 如果需要执行这个功能,取消下面的注释
    kill_range_processes(1, 100)
    
    # 方式2:根据命令行参数
    # if len(sys.argv) > 1:
    #     # 命令行参数模式
    #     process_name = sys.argv[1]
    #     print(f"正在终止进程: {process_name}")
    #     kill_process_by_name(process_name)
    # else:
    #     # 交互模式
    #     interactive_kill()

if __name__ == "__main__":
    # 使用示例
    print("Python 进程终止工具")
    print("=" * 50)
    
    # 示例1:终止单个进程
    # kill_process_by_name("notepad.exe")
    
    # 示例2:终止多个进程
    # kill_processes_by_names(["notepad.exe", "calc.exe"])
    
    # 示例3:交互模式(推荐)
    # interactive_kill()
    
    # 示例4:批量终止 1.exe 到 100.exe(当前启用)
    main()
    
    # 示例5:自定义范围
    # kill_range_processes(1, 50)  # 终止 1.exe 到 50.exe
    # kill_range_processes(200, 300)  # 终止 200.exe 到 300.exe
相关推荐
古城小栈1 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
liann1191 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派1 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
Gary Studio2 小时前
安卓HAL C++基础-智能指针
开发语言·c++
啧不应该啊3 小时前
Day1 Python 与 C 的类型区别
c语言·开发语言
多思考少编码3 小时前
PAT甲级真题1001 - 1005题详细题解(C++)(个人题解)
c++·python·最短路·pat·算法竞赛
cen__y3 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
ZhengEnCi3 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python