在 Windows 下命令行本身不能直接查询显示器支持模式,但可以调用 Windows 自带的 PowerShell / WMIC / DX 接口来判断。最可靠的做法是利用 PowerShell 调用 EnumDisplaySettingsAPI 枚举显示器所有支持分辨率,再匹配你要检测的目标。
下面给你可直接用的方案。
✅ 一、PowerShell 判断显示器是否支持指定分辨率(推荐)
示例:判断 显示器1 是否支持 1920×1080
保存为 CheckRes.ps1:
param(
[int]$Width = 1920,
[int]$Height = 1080,
[int]$DevNum = 0 # 显示器编号,0=第一个
)
Add-Type 'using System;using System.Runtime.InteropServices;public class Disp {
[DllImport("user32.dll", CharSet=CharSet.Ansi)] public static extern bool EnumDisplaySettings(string lpszDeviceName,int iModeNum,ref DEVMODE lpDevMode);
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)] public struct DEVMODE {
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)] public string dmDeviceName; public short dmSpecVersion; public short dmDriverVersion; public short dmSize; public short dmDriverExtra; public int dmFields; public int dmPositionX; public int dmPositionY; public int dmDisplayOrientation; public int dmDisplayFixedOutput; public short dmColor; public short dmDuplex; public short dmYResolution; public short dmTTOption; public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)] public string dmFormName; public short dmLogPixels; public int dmBitsPerPel; public int dmPelsWidth; public int dmPelsHeight; public int dmDisplayFlags; public int dmDisplayFrequency;
}
}
'
$mode = New-Object Disp+DEVMODE
$mode.dmSize = [Runtime.InteropServices.Marshal]::SizeOf($mode)
$supported = $false$i = 0while ([Disp]::EnumDisplaySettings($null, $i, [ref]$mode)) { if ($mode.dmPelsWidth -eq $Width -and $mode.dmPelsHeight -eq $Height) {
$supported = $true
break
}
$i++
}if ($supported) {
Write-Host "SUPPORTED: $Width x $Height"
exit 0} else {
Write-Host "NOT SUPPORTED: $Width x $Height"
exit 1}执行:
powershell -NoProfile -ExecutionPolicy Bypass -File CheckRes.ps1 -Width 1920 -Height 1080
👉 BAT 中可判断:
powershell -NoProfile -ExecutionPolicy Bypass -File CheckRes.ps1 -Width 1920 -Height 1080if %errorlevel%==0 ( echo 显示器支持该分辨率
) else ( echo 显示器不支持该分辨率
)
✅ 二、CMD 查看当前分辨率(不能判断支持列表)
wmic path Win32_VideoController get CurrentHorizontalResolution,CurrentVerticalResolution
⚠️ 只能看当前,无法枚举支持模式。
✅ 三、多显示器判断(简要说明)
EnumDisplaySettings(NULL, i, ...)默认枚举 当前主显示器
若要分别判断 DISPLAY1 / DISPLAY2,需传入 \\.\DISPLAY1等设备名
(可用 EnumDisplayDevices先枚举设备名)
如你需要,我可以给你多显示器版本 PowerShell 脚本(指定 DISPLAY1 / DISPLAY2)。