本文目录导读:

我来为您提供几个不同场景下的自动切换电源计划脚本。
Windows PowerShell 脚本(最常用)
基本版本:根据时间切换
# 自动切换电源计划 - 根据时间段
# 以管理员身份运行
# 获取当前时间
$currentHour = Get-Date -Format "HH"
# 定义电源计划(使用GUID或名称)
$balanced = "平衡" # 平衡模式
$highPerformance = "高性能" # 高性能模式
$powerSaver = "节能" # 节能模式
# 根据时间段切换
if ($currentHour -ge 8 -and $currentHour -lt 18) {
# 工作时间(8:00-18:00)使用平衡模式
powercfg /setactive $balanced
Write-Host "已切换到平衡模式"
} elseif ($currentHour -ge 18 -or $currentHour -lt 22) {
# 晚间(18:00-22:00)使用高性能
powercfg /setactive $highPerformance
Write-Host "已切换到高性能模式"
} else {
# 深夜(22:00-8:00)使用节能
powercfg /setactive $powerSaver
Write-Host "已切到节能模式"
}
进阶版本:根据系统状态切换
# 智能电源计划切换
$batteryThreshold = 20 # 电量低于20%时切换
$cpuLoadThreshold = 30 # CPU使用率阈值
# 获取电源信息
$batteryStatus = (Get-WmiObject Win32_Battery).EstimatedChargeRemaining
# 获取系统是否使用电池
$system = Get-WmiObject -Class Win32_SystemInformation
# 判断是否使用电池
if ($system.PowerSupplies[0].Status -eq "Online") {
# 使用交流电
if (Get-Process | Sort-Object CPU | Select-Object -Last 5 |
Where-Object {$_.CPU -gt $cpuLoadThreshold}) {
# 运行重负载程序时
powercfg /setactive "高性能"
Write-Host "检测到高负载,使用高性能模式"
} else {
# 普通使用
powercfg /setactive "平衡"
Write-Host "使用平衡模式"
}
} elseif ($batteryStatus -lt $batteryThreshold) {
# 使用电池且电量低
powercfg /setactive "节能"
Write-Host "电量低于${batteryThreshold}%,切换到节能模式"
} else {
# 使用电池但电量充足
powercfg /setactive "平衡"
Write-Host "使用电池,保持平衡模式"
}
批处理脚本(CMD)
@echo off电源计划自动切换器
REM 获取当前时间
for /f "tokens=1" %%i in ("%time%") do set time=%%i
set hour=%time:~0,2%
REM 切换电源计划
if %hour% GEQ 8 if %hour% LEQ 18 (
powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
echo 已切换到平衡模式
) else if %hour% GEQ 19 if %hour% LEQ 22 (
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
echo 已切换到高性能模式
) else (
powercfg /setactive a1841308-3541-4fab-bc81-f71556f20b4a
echo 已切换到节能模式
)
pause
Python 脚本(更灵活)
import os
import time
import subprocess
import psutil
import logging
from datetime import datetime
class PowerPlanManager:
def __init__(self):
# 定义电源计划GUID
self.POWER_PLANS = {
"balanced": "381b4222-f694-41f0-9685-ff5bb260df2e",
"high_performance": "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c",
"power_saver": "a1841308-3541-4fab-bc81-f71556f20b4a"
}
# 设置日志
logging.basicConfig(
filename='power_plan.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
def get_battery_status(self):
"""获取电池状态"""
battery = psutil.sensors_battery()
if battery:
return battery.percent, battery.power_plugged
return None, None
def set_power_plan(self, plan_name):
"""设置电源计划"""
if plan_name in self.POWER_PLANS:
cmd = f'powercfg /setactive {self.POWER_PLANS[plan_name]}'
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
if result.returncode == 0:
logging.info(f"切换到{plan_name}模式")
return True
else:
logging.error(f"切换失败: {result.stderr}")
return False
def smart_switch(self):
"""智能切换逻辑"""
battery_percent, is_plugged = self.get_battery_status()
current_hour = datetime.now().hour
# 基于电池状态
if not is_plugged and battery_percent and battery_percent < 20:
return self.set_power_plan("power_saver")
# 基于时间
if 8 <= current_hour <= 17:
return self.set_power_plan("balanced")
elif 17 < current_hour <= 22:
return self.set_power_plan("high_performance")
else:
return self.set_power_plan("power_saver")
def run_daemon(self, interval=60):
"""作为守护进程运行"""
print(f"电源计划管理器启动,每{interval}秒检查一次")
while True:
self.smart_switch()
time.sleep(interval)
if __name__ == "__main__":
manager = PowerPlanManager()
manager.run_daemon(interval=300) # 每5分钟检查一次
任务计划程序配合使用
创建 Windows 任务计划程序自动执行:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2024-01-01T00:00:00</Date>
<Author>YourName</Author>
</RegistrationInfo>
<Triggers>
<TimeTrigger>
<StartBoundary>2024-01-01T08:00:00</StartBoundary>
<Enabled>true</Enabled>
<Repetition>
<Interval>PT1H</Interval>
<StopAtDurationEnd>false</StopAtDurationEnd>
</Repetition>
</TimeTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<RunLevel>HighestAvailable</RunLevel>
<UserId>Administrator</UserId>
<LogonType>InteractiveToken</LogonType>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
</Settings>
<Actions>
<Exec>
<Command>powershell.exe</Command>
<Arguments>-ExecutionPolicy Bypass -File "C:\Scripts\power_switch.ps1"</Arguments>
</Exec>
</Actions>
</Task>
高级智能版本
# 综合智能电源管理脚本
param(
[int]$CheckInterval = 3000, # 默认每5秒检查一次
[switch]$Daemon # 后台运行模式
)
function Get-SystemLoad {
# 获取系统负载
$cpu = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples[0].CookedValue
$memory = (Get-Counter '\Memory\% Committed Bytes In Use').CounterSamples[0].CookedValue
return @{CPU = $cpu; Memory = $memory}
}
function Switch-PowerPlan {
param([string]$Plan)
powercfg /setactive $Plan
# 记录日志
$logDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path "power_switch.log" -Value "$logDate - 切换到 $Plan"
}
function Test-PowerPlan {
# 获取当前系统状态
$battery = Get-WmiObject -Class Win32_Battery -ErrorAction SilentlyContinue
$load = Get-SystemLoad
$hour = (Get-Date).Hour
# 决策逻辑
if ($battery.EstimatedChargeRemaining -lt 15) {
Switch-PowerPlan "a1841308-3541-4fab-bc81-f71556f20b4a" # 节能
}
elseif ($load.CPU -gt 70) {
Switch-PowerPlan "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c" # 高性能
}
elseif ($hour -ge 8 -and $hour -le 18) {
Switch-PowerPlan "381b4222-f694-41f0-9685-ff5bb260df2e" # 平衡
}
else {
# 晚上自动关闭屏幕和降低性能
powercfg /change monitor-timeout-ac 5
powercfg /change standby-timeout-ac 10
Switch-PowerPlan "a1841308-3541-4fab-bc81-f71556f20b4a" # 节能
}
}
# 主循环
if ($Daemon) {
while ($true) {
Test-PowerPlan
Start-Sleep -Milliseconds $CheckInterval
}
} else {
Test-PowerPlan
}
使用说明
- 以管理员身份运行:修改电源计划需要管理员权限
- 查看当前电源计划:使用
powercfg /list查看当前所有电源计划 - 计划任务:将脚本添加到任务计划程序中来实现自动运行
这些脚本可以根据您的具体需求进行调整,例如修改时间范围、添加特定程序检测等功能。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播