Windows命令行下如何检测主显示器并通过nircmd一键切换?
一键切换主显示器的批处理实现
当然可以实现这个需求!我之前刚好帮朋友做过类似的一键切换脚本,结合Windows自带的wmic命令和你已经在用的nircmd,就能把两个批处理合并成一个,实现自动检测当前主显示器并切换到另一台的功能。
核心思路
- 用
wmic命令读取系统中标记为主显示器的设备ID - 根据获取到的设备ID判断当前主显示器是哪一台
- 调用
nircmd切换到另一台显示器作为主显示器
完整批处理代码
@echo off setlocal enabledelayedexpansion :: 从WMI获取当前主显示器的DeviceID,跳过表头并清理输出格式 for /f "skip=1 tokens=*" %%a in ('wmic path Win32_DesktopMonitor WHERE Primary^='True' GET DeviceID') do ( set "PrimaryDeviceID=%%a" :: 移除输出中的多余空格和换行符 set "PrimaryDeviceID=!PrimaryDeviceID: =!" if defined PrimaryDeviceID goto :GotPrimary ) :GotPrimary :: 根据当前主显示器ID执行切换逻辑 if "!PrimaryDeviceID!"=="DISPLAY1" ( :: 切换到第二台显示器(这里的数字对应nircmd的显示器编号,通常1是第一台,2是第二台) nircmd.exe setprimarydisplay 2 echo 已成功切换主显示器到第二台 ) else ( :: 默认切换回第一台显示器 nircmd.exe setprimarydisplay 1 echo 已成功切换主显示器到第一台 ) endlocal pause
关键注意事项
- 确认你的显示器DeviceID:不同系统的显示器ID可能略有差异(比如有的是
DISPLAY1/DISPLAY2,有的可能带额外后缀)。建议先手动运行以下命令,查看自己的显示器信息:
输出里wmic path Win32_DesktopMonitor GET DeviceID,PrimaryPrimary列显示True的那一行,对应的DeviceID就是当前主显示器的ID,你需要把批处理里的DISPLAY1替换成你实际的ID。 - nircmd的路径:如果
nircmd.exe不在系统的环境变量PATH里,记得在批处理中写完整路径,比如"C:\Program Files\nircmd\nircmd.exe"。 - 多显示器场景:如果你有超过两台显示器,这个脚本需要额外调整判断逻辑,但针对两台显示器的情况,上面的代码完全适用。
内容的提问来源于stack exchange,提问作者AUzun




