求助:使用批处理文件切换双显示器模式失败问题
问题分析与解决方案
原批处理无法正常工作的核心问题是错误地用powershell命令的ERRORLEVEL判断显示模式——powershell命令只要执行成功,ERRORLEVEL就会是0,和当前激活的显示器数量无关,导致判断逻辑完全失效。
正确的思路是统计当前激活的显示器数量:
- 仅内置显示器激活时,激活数量为1
- 双屏扩展模式时,激活数量≥2
修正后的批处理代码如下:
@echo off setlocal enabledelayedexpansion REM 统计当前激活的显示器数量 for /f %%a in ('powershell -command "(Get-WmiObject -Namespace root\wmi -Class WmiMonitorConnectionParams | Where-Object { $_.Active }).Count"') do set activeCount=%%a REM 根据激活数量切换模式 if !activeCount! geq 2 ( echo 切换至仅内置显示器模式... displayswitch.exe /internal ) else ( echo 切换至双屏扩展模式... displayswitch.exe /extend ) echo 显示模式切换完成。 pause endlocal
代码说明
- 使用
setlocal enabledelayedexpansion启用延迟变量扩展,确保循环内赋值的变量能正确读取 - 通过powershell筛选出
Active为True的显示器,统计其数量 - 根据数量判断当前模式:≥2则是扩展模式,切换到单屏;否则切换到扩展模式
内容的提问来源于stack exchange,提问作者Tiago Dias
相关产品推荐
相关产品推荐

