批处理文件 - 发现的分辨率

时间:2012-10-03 12:03:07

标签: batch-file screen-resolution

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

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

有没有人知道如何做到这一点?

干杯,

埃利奥特

3 个答案:

答案 0 :(得分:3)

作为注册表的替代方案,您还可以通过Wmic检查解决方案:
wmic desktopmonitor where availability=3 get screenHeight,screenWidth
有关 Win32_DesktopMonitor 课程的更多信息,请访问:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394122%28v=vs.85%29.aspx

警惕如果连接的监视器超过1个,可以获得多行 - 您应该在脚本中处理这些情况。

答案 1 :(得分:2)

由于以下几个原因,这有点棘手:

  1. 解决方案位于注册表中,您可以使用reg.exe进行查询。然而,它并不容易找到。对我而言,它在

    之下
    HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000
    
    <{1}}和DefaultSettings.XResolution中的

    。但是,GUID可能会因您拥有的视频卡和驱动程序而异,因此您必须在DefaultSettings.YResolution下进行全部迭代。

  2. 更高分辨率是什么意思? 1366×768会高于1280×1024吗?你算上总像素数吗?一维更高?在两个?

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

    HKLM\SYSTEM\CurrentControlSet\Control\Video

答案 2 :(得分:0)

在我的情况下,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%