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 comment
chcp 65001 >nul

chcp = change code page
65001 = UTF-8 编码
>nul 表示把输出重定向到 nul(类似丢弃输出)
所以这句不会在屏幕打印“已将活动代码页设置为:65001”之类的提示

net session >nul 2>&1

net 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
exit

powershell 配置 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
 
# 结束
 

测试脚本(先手动确认能工作)

  1. 以普通用户打开 PowerShell(不是管理员也可,因为修改的是 HKCU)。
  2. 运行(把路径改成你的路径):

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)。

可选择:如果任务失败,重新启动每:(根据需要可勾选)。

保持其他默认,点击“确定”。