工作时间常被通知、音乐或无关应用打断?想在指定时间自动进入“专注”状态并恢复到轻松模式?本文演示如何用 Windows 11 的内置工具 + 简单 PowerShell 脚本,一键或定时切换工作/休憩模式——不用复杂配置,人人可上手。

核心思路(30 秒读懂)
- 用两份 PowerShell 脚本(Work / Relax)来:
- 切换桌面壁纸(工作/放松不同图)
- 启动必须的工作软件(如 VS Code、浏览器)
- 关闭干扰软件(音乐播放器、游戏等,用户自定义)
- 用「任务计划程序」或桌面快捷方式触发脚本,实现定时或一键切换。
准备工作(5 分钟)
- 在 C:Wallpapers 下准备两张壁纸: work.jpg 与 relax.jpg。
- 决定工作时需启动的程序与休憩时需恢复的程序(列如工作:VS Code、Chrome;休憩:Spotify)。
- 以管理员或普通用户身份均可运行脚本(视所需关闭的程序而定)。
脚本 A:Work 模式(打开工作程序,关闭干扰,换壁纸)
在 C:Scriptswork_mode.ps1 创建并保存以下内容(若目录不存在,请先创建):
# work_mode.ps1
# 说明:启动常用工作软件,关闭指定干扰应用,切换为工作壁纸
# ———- 配置区:按需修改 ———-
$workWallpaper = “C:Wallpaperswork.jpg”
$startApps = @(
“C:Program FilesMicrosoft VS CodeCode.exe”,
“C:Program FilesGoogleChromeApplicationchrome.exe”
# 如果需要打开特定工作目录,可添加: “C:Program FilesGoogleChromeApplicationchrome.exe –profile-directory=Default”
)
$killProcesses = @(“Spotify”,”Steam”,”XboxApp”) # 要结束的进程名(不带.exe),按需修改或留空
# ———- 配置区结束 ———-
# 1) 切换壁纸(调用 Windows API)
$code = @”
using System.Runtime.InteropServices;
public class Wallpaper {
[DllImport(“user32.dll”, SetLastError=true)]
public static extern bool SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
}
“@
Add-Type $code
[Wallpaper]::SystemParametersInfo(20,0,$workWallpaper,3) | Out-Null
# 2) 启动工作应用(若已运行则忽略)
foreach ($app in $startApps) {
if (Test-Path $app) {
Start-Process -FilePath $app -WindowStyle Normal
}
}
# 3) 结束干扰进程(谨慎:请确认进程名)
foreach ($p in $killProcesses) {
Get-Process -Name $p -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
}
# 4) 可选:打开一个专注计时页面(例如番茄钟网页)
Start-Process “https://tomato.jiandan59.cn/”
提示:请把 $startApps、$killProcesses 与壁纸路径根据你的电脑实际位置修改。结束进程会强制关闭,请确保没有未保存工作。
脚本 B:Relax 模式(恢复休闲程序,关闭工作工具,换壁纸)
在 C:Scripts
elax_mode.ps1 创建并保存:
# relax_mode.ps1
# 说明:切换为放松壁纸,关闭工作软件,启动放松应用
# ———- 配置区:按需修改 ———-
$relaxWallpaper = “C:Wallpapers
elax.jpg”
$startApps = @(
“C:Program FilesSpotifySpotify.exe”
)
$killProcesses = @(“Code”,”chrome”) # 结束工作相关进程名(VSCode 进程名一般为 code)
# ———- 配置区结束 ———-
# 切换壁纸
$code = @”
using System.Runtime.InteropServices;
public class Wallpaper {
[DllImport(“user32.dll”, SetLastError=true)]
public static extern bool SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
}
“@
Add-Type $code
[Wallpaper]::SystemParametersInfo(20,0,$relaxWallpaper,3) | Out-Null
# 关闭工作进程
foreach ($p in $killProcesses) {
Get-Process -Name $p -ErrorAction SilentlyContinue | Stop-Process -Force -ErrorAction SilentlyContinue
}
# 启动放松应用
foreach ($app in $startApps) {
if (Test-Path $app) {
Start-Process -FilePath $app -WindowStyle Normal
}
}
为脚本创建一键桌面快捷方式(快速触发)
- 右键桌面 → 新建 → 文本文档,内容写:
@echo off
powershell -ExecutionPolicy Bypass -File “C:Scriptswork_mode.ps1”
保存为 工作模式.bat(确保扩展名为 .bat),右键 → 发送到 → 桌面(创建快捷方式)。同理为 relax_mode.bat 创建快捷方式。
- 右键快捷方式 → 属性 → 在“高级”里可选择以管理员身份运行(若需要)。你也可以更换图标并固定到任务栏/开始菜单。
用任务计划程序定时执行(自动化)
如果你想每天在固定时间自动切换(例如 09:00 进入工作模式,18:00 进入休憩模式):
- 打开 任务计划程序(在开始菜单搜索)。
- 右侧选择 创建基本任务 → 填写名称(例如 进入工作模式)。
- 触发器选择 每天 → 设置开始时间(例如 09:00)。
- 操作选择 启动程序,程序/脚本填写: C:WindowsSystem32WindowsPowerShellv1.0powershell.exe
- 参数填写:
-ExecutionPolicy Bypass -File “C:Scriptswork_mode.ps1”
- 完成创建。按同样方法为下班/放松时间创建任务,参数改为 relax_mode.ps1。
提示:在“常规”选项卡中勾选“使用最高权限运行”(如果脚本需要结束以管理员权限运行的程序)。
可选增强(更进一步)
- 静音/恢复系统音量:Windows 原生 PowerShell 控制系统音量较复杂,可选使用轻量工具(如 NirCmd)做“静音/撤销静音”。若需要我可提供无广告的具体步骤与脚本。
- 自动打开/关闭 Wi-Fi 或蓝牙:可通过 netsh 或 PowerShell 命令,但需要管理员权限。
- 集成 Focus Assist(专注助手):提议在 Windows 设置 → 系统 → 专注助手 中配置“自动规则”(基于时间或当你在玩游戏时自动启用),此为稳定的系统级方案,不提议随意改注册表。
常见问题与注意事项
- 脚本结束进程会导致未保存的工作丢失——请先保存文档或把关键进程从 $killProcesses 列表里移除。
- 若脚本被阻止运行,请右键脚本文件 → 属性 → 解除“来自其他计算机”的阻止,或使用 -ExecutionPolicy Bypass 参数执行。
- 路径必须正确(PowerShell 对路径敏感),提议复制可执行文件绝对路径到脚本中测试。
- 若要让脚本在锁屏状态下也能运行,请在任务计划程序中设置“无论用户是否登录都要运行”。
总结(你将获得的成果)
- 一键/定时进入“工作模式”:自动换壁纸、启动工作程序、关闭干扰应用、打开专注计时。
- 一键/定时进入“休憩模式”:恢复放松壁纸、关闭工作进程、打开音乐或休憩应用。
- 零成本、可定制、完全基于 Windows 自身与简单脚本,适合希望提升专注力与工作效率的读者.


