Batch file 批处理文件以获取windows 10上的当前分辨率

Batch file 批处理文件以获取windows 10上的当前分辨率,batch-file,Batch File,我尝试读取当前分辨率,当Resoltuiton不是4k时,标志为false,当它变回4k时,视频进程被终止并重新启动 但在不同的windows机器上,我总能获得屏幕上的最大分辨率 @echo off set resolution=false :loop Set "WMIC_Command=wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVertical

我尝试读取当前分辨率,当Resoltuiton不是4k时,标志为false,当它变回4k时,视频进程被终止并重新启动

但在不同的windows机器上,我总能获得屏幕上的最大分辨率

@echo off

set resolution=false

:loop

Set "WMIC_Command=wmic path Win32_VideoController get VideoModeDescription^,CurrentHorizontalResolution^,CurrentVerticalResolution^ /format:Value"

Set "H=CurrentHorizontalResolution"
Set "V=CurrentVerticalResolution"
Call :GetResolution %H% HorizontalResolution
Call :GetResolution %V% VerticalResolution

echo(
echo Screen Resolution is : %HorizontalResolution% x %VerticalResolution% = %resolution%
timeout /t 2

if %HorizontalResolution% == 3840 (
  if %resolution% == false (
    echo "hoppla die Auflösung wurde geaendert"
    TASKKILL /F /FI "WINDOWTITLE eq SHH_Wandprojektion*"
      echo "Video task gekillt"
      timeout /t 2
      start "E:\_projekte\STADTHOEFE_HAMBURG\PROJEKTION_VIDEO\mpc-hc.exe" "E:\_projekte\STADTHOEFE_HAMBURG\PROJEKTION_VIDEO\SHH_Wandprojektion_200123b_1.mp4"
      echo "und wieder geoeffnet"
    set resolution=true
  )
) else (
  set resolution=false
)

timeout /t 3
goto loop


::****************************************************
:GetResolution 
FOR /F "tokens=2 delims==" %%I IN (
  '%WMIC_Command% ^| find /I "%~1" 2^>^nul'
) DO FOR /F "delims=" %%A IN ("%%I") DO SET "%2=%%A"
Exit /b
::****************************************************
另一种方法也仅打印屏幕的最大分辨率:

for /f "tokens=4,5 delims=. " %%a in ('ver') do set "version=%%a%%b"

if version lss 62 (
    ::set "wmic_query=wmic desktopmonitor get screenheight, screenwidth /format:value"
    for /f "tokens=* delims=" %%@ in ('wmic desktopmonitor get screenwidth /format:value') do (
        for /f "tokens=2 delims==" %%# in ("%%@") do set "x=%%#"
    )
    for /f "tokens=* delims=" %%@ in ('wmic desktopmonitor get screenheight /format:value') do (
        for /f "tokens=2 delims==" %%# in ("%%@") do set "y=%%#"
    )

) else (
    ::wmic path Win32_VideoController get VideoModeDescription,CurrentVerticalResolution,CurrentHorizontalResolution /format:value
    for /f "tokens=* delims=" %%@ in ('wmic path Win32_VideoController get CurrentHorizontalResolution  /format:value') do (
        for /f "tokens=2 delims==" %%# in ("%%@") do set "x=%%#"
    )
    for /f "tokens=* delims=" %%@ in ('wmic path Win32_VideoController get CurrentVerticalResolution /format:value') do (
        for /f "tokens=2 delims==" %%# in ("%%@") do set "y=%%#"
    )

)

echo Resolution %x%x%y%

“但我总是能在屏幕上获得最大的分辨率”这是怎么回事?你正在专门调用CurrentResolution。我可以将显示设置为任意值,始终为4K!我使用10.0.18362.592上的“getwmiproperty.exe”获得了实际利率,我切换到python,效果非常好。我有3台机器在检查当前值时返回最大分辨率。