如何用脚本批量关闭指定软件?

wen 实用脚本 2

本文目录导读:

如何用脚本批量关闭指定软件?

  1. Windows 系统
  2. Linux/Mac 系统
  3. 使用建议
  4. Python 跨平台方案

我来介绍几种批量关闭指定软件的方法,你可以根据需求选择:

Windows 系统

方法1:使用 PowerShell 脚本

# 批量关闭指定软件(按进程名)
$targetProcesses = @("notepad", "chrome", "word")
foreach ($process in $targetProcesses) {
    Get-Process -Name $process -ErrorAction SilentlyContinue | Stop-Process -Force
    Write-Host "已关闭: $process"
}

方法2:使用 taskkill 命令(CMD/BAT)

@echo off
setlocal enabledelayedexpansion
:: 要关闭的程序列表
set processes=chrome.exe firefox.exe notepad.exe
for %%p in (%processes%) do (
    taskkill /f /im %%p >nul 2>&1
    if !errorlevel! equ 0 (
        echo 已关闭: %%p
    ) else (
        echo 未找到运行中的: %%p
    )
)

方法3:更灵活的 PowerShell 脚本

# 从文本文件读取进程列表
$processList = Get-Content "C:\processes.txt"
foreach ($process in $processList) {
    if ($process.Trim() -ne "") {
        $proc = Get-Process -Name $process -ErrorAction SilentlyContinue
        if ($proc) {
            $proc | Stop-Process -Force
            Write-Host "✓ 已关闭: $process"
        } else {
            Write-Host "✗ 未找到: $process"
        }
    }
}

Linux/Mac 系统

方法4:Shell 脚本

#!/bin/bash
# 要关闭的程序列表
processes=("firefox" "chrome" "gedit")
for proc in "${processes[@]}"; do
    if pgrep -x "$proc" > /dev/null; then
        pkill -f "$proc"
        echo "已关闭: $proc"
    else
        echo "未运行: $proc"
    fi
done

方法5:高级版(支持模糊匹配)

#!/bin/bash
close_processes() {
    local patterns=("$@")
    for pattern in "${patterns[@]}"; do
        local pids=$(pgrep -f "$pattern" 2>/dev/null)
        if [ -n "$pids" ]; then
            kill -9 $pids 2>/dev/null
            echo "成功关闭匹配 '${pattern}' 的所有进程"
        else
            echo "未找到匹配 '${pattern}' 的进程"
        fi
    done
}
# 使用示例
close_processes "firefox" "chrome" "python script.py"

使用建议

  1. 安全第一:运行前先备份重要数据
  2. 测试模式:先使用 -WhatIf 参数测试脚本效果
  3. 日志记录:添加日志功能追踪操作记录
  4. 权限问题:某些系统进程需要管理员权限

Python 跨平台方案

import psutil
import os
import sys
def batch_kill_processes(process_names):
    for proc in psutil.process_iter(['pid', 'name', 'exe']):
        try:
            for target_name in process_names:
                if target_name.lower() in proc.info['name'].lower():
                    proc.kill()
                    print(f"已终止: {proc.info['name']} (PID: {proc.info['pid']})")
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            continue
# 使用示例
target_processes = ['chrome.exe', 'notepad.exe', 'firefox.exe']
batch_kill_processes(target_processes)

选择最适合你场景的方法,如果是 Windows,推荐使用 PowerShell;Linux/Mac 则用 bash 脚本。

抱歉,评论功能暂时关闭!