如何通过命令行判断当前显示器是否支持某个分辨率?

在 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
  • 退出码 0 → 支持

  • 退出码 1 → 不支持

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


您可以还会对下面的文章感兴趣:

暂无相关文章