You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows命令行下如何检测主显示器并通过nircmd一键切换?

一键切换主显示器的批处理实现

当然可以实现这个需求!我之前刚好帮朋友做过类似的一键切换脚本,结合Windows自带的wmic命令和你已经在用的nircmd,就能把两个批处理合并成一个,实现自动检测当前主显示器并切换到另一台的功能。

核心思路

  1. wmic命令读取系统中标记为主显示器的设备ID
  2. 根据获取到的设备ID判断当前主显示器是哪一台
  3. 调用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,Primary
    
    输出里Primary列显示True的那一行,对应的DeviceID就是当前主显示器的ID,你需要把批处理里的DISPLAY1替换成你实际的ID。
  • nircmd的路径:如果nircmd.exe不在系统的环境变量PATH里,记得在批处理中写完整路径,比如"C:\Program Files\nircmd\nircmd.exe"
  • 多显示器场景:如果你有超过两台显示器,这个脚本需要额外调整判断逻辑,但针对两台显示器的情况,上面的代码完全适用。

内容的提问来源于stack exchange,提问作者AUzun

火山引擎 最新活动