batch-file - 在 Windows 10 上获取当前分辨率的批处理文件
问题描述
我尝试读取当前分辨率,当分辨率不是 4k 时,一个标志为假,当它变回 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%
解决方案
推荐阅读
- c# - 在 LINQ 中选择 DISTINCT LEFT([string],2)
- java - 如何仅使用命令行创建工件 jar?
- swift - 如何在swift中禁用anyObject按钮中的按钮
- php - 使用数组 wordpress php 更改元数据的批量页面克隆
- javascript - 我正在尝试在 Webflow 中嵌入交互式图像,但内容中的换行符未显示
- flutter - 终止飞镖/颤振中的功能
- mysql - 如何根据选择查询删除
- spring-kafka - 在 Spring Boot 中重新启动侦听器后无法读取未提交的偏移量
- javascript - bot更新信息的活动
- react-native - Hermes 是否隐藏了 JS bundle 文件中的所有 JS 代码?