我试图找出一种通过批处理文件检测用户分辨率是否高于或低于“1280 x 1024”的方法。
如果分辨率为“1280 x 1024”或更高,则执行 A。否则执行 B。
有谁知道如何做到这一点?
干杯,
艾略特
我试图找出一种通过批处理文件检测用户分辨率是否高于或低于“1280 x 1024”的方法。
如果分辨率为“1280 x 1024”或更高,则执行 A。否则执行 B。
有谁知道如何做到这一点?
干杯,
艾略特
作为注册表的替代方法,您还可以通过以下方式检查分辨率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 个,可能会出现多行 - 您应该在脚本中处理这些情况。
由于以下几个原因,这有点棘手:
分辨率在注册表中,您可以使用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 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%