BAT scripts, also known as batch scripts, are a type of script file in Windows that contains a series of commands to be executed by the command-line interpreter. These scripts are useful for automating repetitive tasks, managing files, and performing system administration tasks.
使用bat 配置自动打开并关系软件
打开,关闭进程操作。以我举例子,我想打开第五人格的时候,关闭 FastGesture.exe程序,防止游戏内误触。
@echo off
:: 自动提权
net session >nul 2>&1
if %errorlevel% neq 0 (
echo Requesting admin permission...
powershell -Command "Start-Process '%~0' -Verb RunAs"
exit /b
)
chcp 65001 >nul
cd /d D:\dwrg2
echo closing FastGestures...
taskkill /F /T /IM FastGestures.exe >nul 2>&1
echo starting dwrg...
start "" "dwrg.exe"
echo finished
exit解释:
@echo off,关闭之后所有命令的回显,不然bat文件中每条指令会在cmd命令窗口显示
::为注释,或用 rem
:: 自动提权
rem this is a commentchcp 65001 >nulchcp = change code page
65001 = UTF-8 编码
>nul 表示把输出重定向到 nul(类似丢弃输出)
所以这句不会在屏幕打印“已将活动代码页设置为:65001”之类的提示
net session >nul 2>&1net session 是一个需要管理员权限才能成功执行的命令。
- 如果当前是管理员,
net session执行成功返回0 - 如果不是管理员,会报错,返回
不等于0的值
| 符号 | 含义 |
|---|---|
>nul | 把正常输出重定向到 nul(丢弃) |
2>&1 | 把错误输出也重定向到同一位置(也丢弃) |
if %errorlevel% neq 0 ()%变量名% → 读出变量的值
比如 %username% 会输出当前 Windows 用户名。
neq = not equal to
powershell -Command "Start-Process '%~0' -Verb RunAs"
exit /b/b = 退出当前批处理脚本(batch)或当前子例程,而不是关闭整个命令窗
cd /d D:\dwrg2/d → 可以同时切换盘符 + 目录
假设你当前在:
C:\Users\you>
你输入:
cd D:\dwrg2
结果?不会跳到 D 盘
它只会认为你想在 C 盘找这个路径,会失败。
添加结束程序后,再自动打开 dwrg.exe
@echo off
:: 自动提权
net session >nul 2>&1
if %errorlevel% neq 0 (
echo Requesting admin permission...
powershell -Command "Start-Process '%~0' -Verb RunAs"
exit /b
)
chcp 65001 >nul
cd /d D:\dwrg2
echo closing FastGestures...
taskkill /F /T /IM FastGestures.exe >nul 2>&1
echo starting dwrg...
start "" "dwrg.exe"
:: 轮询等待 dwrg.exe 退出
:waitloop
timeout /t 1 /nobreak >nul
tasklist /FI "IMAGENAME eq dwrg.exe" | find /I "dwrg.exe" >nul
if %ERRORLEVEL%==0 goto waitloop
:: dwrg 已退出,启动 FastGestures
start "" "C:\Program Files\FastGestures\FastGestures.exe"
echo finished
exitpowershell 配置 windows 自动切换主题
创建自动判断脚本 AutoTheme.ps1
# AutoTheme.ps1
# 根据当前小时判断:07:00-18:59 为浅色;其余为深色
# 如需修改白天时间段,请调整 $DayStart 和 $DayEnd
$DayStart = 7 # 白天开始小时(含)
$DayEnd = 19 # 白天结束小时(不含),19 表示 19:00 起为夜间
$h = (Get-Date).Hour
if ($h -ge $DayStart -and $h -lt $DayEnd) {
$value = 1 # 浅色
} else {
$value = 0 # 深色
}
# 修改当前用户的主题设置(HKCU)
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" -Name "AppsUseLightTheme" -Value $value -Force
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" -Name "SystemUsesLightTheme" -Value $value -Force
# 可选:刷新资源管理器使任务栏颜色立即刷新(有时生效更可靠)
# Restart-Process -Name explorer -Force
# 结束
测试脚本(先手动确认能工作)
- 以普通用户打开 PowerShell(不是管理员也可,因为修改的是 HKCU)。
- 运行(把路径改成你的路径):
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\AutoTheme.ps1"
”C:\Scripts\AutoTheme.ps1”改为自己的路径
如果没切换,确认你用的是本用户且脚本路径正确。若希望强制刷新资源管理器,可把脚本里 Restart-Process -Name explorer -Force 的注释去掉(会重启资源管理器窗口,会让桌面闪一下)。
在任务计划程序里建任务(图形界面详尽步骤 — 推荐)
打开任务计划程序
创建任务(不是基本任务)
常规(General)选项卡:
名称:AutoTheme(或你想要的名字)。
描述:按时间/登录自动切换浅色/深色主题(可选)。
选择:仅在用户登录时运行(勾选)。
理由:主题是每个用户的 HKCU,必须在用户会话中修改才能生效。
勾选:使用最高权限运行(Run with highest privileges)。
“配置为”:选择你当前的 Windows 版本(默认通常没问题)。
触发器(Triggers)选项卡 → 点 新建… 三次创建 3 个触发器:
触发器 A:每日,开始时间 07:00:00,勾选“启用”。
触发器 B:每日,开始时间 19:00:00,勾选“启用”。
触发器 C:在登录时(Begin the task: At log on),下拉选择“任何用户的登录”或指定你的用户(推荐“任何用户”或指定你自己),勾选“启用”。
每个触发器创建后按“确定”。
操作(Actions)选项卡 → 点 新建…:
操作:启动程序。
这两步非常重要:
程序或脚本(Program/script):powershell.exe
添加参数(Add arguments):
-ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Scripts\AutoTheme.ps1"
起始于(可留空或填写 C:\Scripts),然后“确定”。
条件(Conditions)选项卡:
取消勾选 只在计算机使用交流电源时才启动(如果你想笔记本在电池也能运行则取消)。
其它默认即可。
设置(Settings)选项卡(非常重要):
勾选:如果错过计划运行时间则尽快运行任务(Run task as soon as possible after a scheduled start is missed)。
可选择:如果任务失败,重新启动每:(根据需要可勾选)。
保持其他默认,点击“确定”。