Batch file 批处理文件-发现的解析

Batch file 批处理文件-发现的解析,batch-file,screen-resolution,Batch File,Screen Resolution,我试图找出一种方法,通过批处理文件检测用户分辨率是否高于或低于“1280 x 1024” 如果分辨率为“1280 x 1024”或更高,则执行A。否则执行B 有人知道怎么做吗 干杯 Elliott这有点棘手,原因如下: 分辨率在注册表中,您可以使用reg.exe查询该分辨率。然而,这并不容易找到。对我来说,这是在 HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000 在De

我试图找出一种方法,通过批处理文件检测用户分辨率是否高于或低于“1280 x 1024”

如果分辨率为“1280 x 1024”或更高,则执行A。否则执行B

有人知道怎么做吗

干杯


Elliott

这有点棘手,原因如下:

  • 分辨率在注册表中,您可以使用
    reg.exe
    查询该分辨率。然而,这并不容易找到。对我来说,这是在

    HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000
    
    DefaultSettings.XResolution
    DefaultSettings.YResolution
    中。但是,GUID可能因您拥有的显卡和驱动程序而异,因此您必须在
    HKLM\SYSTEM\CurrentControlSet\Control\video
    下进行迭代

  • 分辨率更高是什么意思?1366×768会高于1280×1024吗?你计算总像素数吗?一维更高?两者都有

  • 无论如何,我拼凑了下一批。必要时进行调整。它在我的机器上产生了正确的结果,但我没有那么多要测试的

    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=" %%l in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\Video') do (
        reg query %%l\0000 /v DefaultSettings.XResolution >nul 2>&1
        if not errorlevel 1 (
            for /f "skip=1 tokens=3 delims= " %%x in ('reg query %%l\0000 /v DefaultSettings.XResolution') do (
                set /a X=%%x
            )
            for /f "skip=1 tokens=3 delims= " %%x in ('reg query %%l\0000 /v DefaultSettings.YResolution') do (
                set /a Y=%%x
            )
        )
    )
    echo Resolution: %X% × %Y%
    
    if %X% GTR 1280 if %Y% GTR 1024 echo Greater than 1280 × 1024.
    

    作为注册表的替代方案,您还可以通过
    Wmic

    wmic desktopmonitor,其中可用性=3获取屏幕高度、屏幕宽度

    有关Win32_DesktopMonitor类的详细信息,请参见:


    请注意,如果连接了多个监视器,可能会得到多行-您应该在脚本中处理这些情况

    在我的例子中,
    wmic desktopmonitor
    不返回任何内容

    这个在Win 8.1上对我有效

    @ECHO OFF
    
    for /f "delims=" %%# in  ('"wmic path Win32_VideoController  get CurrentHorizontalResolution,CurrentVerticalResolution /format:value"') do (
      set "%%#">nul
    )
    
    echo %CurrentHorizontalResolution%
    echo %CurrentVerticalResolution%
    

    我想我会说,如果其中一个值低于我所说的值,那么应该执行B;你应该能从那里适应。嗯,我真蠢。WMI应该是显而易见的答案。这篇文章似乎与[这篇文章][1]^^[1]相似: