无忧启动论坛

标题: 用bat获取所有扩展屏幕的像素分辨率 [打印本页]

作者: Myptour    时间: 2024-12-22 19:51
标题: 用bat获取所有扩展屏幕的像素分辨率
本帖最后由 Myptour 于 2024-12-27 21:57 编辑

度娘了一段,用dxdiag的方法,如下,还有更快速的方法吗?
  1. [url=home.php?mod=space&uid=336905]@echo[/url] off
  2. echo 正在获取所有显示器分辨率信息...

  3. REM 创建一个临时文件来存储dxdiag的输出
  4. setlocal enabledelayedexpansion
  5. set "tempFile=dxdiag_output.txt"

  6. REM 使用dxdiag命令生成诊断信息文本文件
  7. dxdiag /t %tempFile%

  8. REM 初始化变量

  9. REM 读取生成的文本文件并提取显示器分辨率信息
  10. for /f "tokens=2 delims=:" %%a in ('findstr /i /C:"Current Mode:" dxdiag_output.txt') do (
  11.         echo 显示器分辨率: !resolution! x %%a

  12.     )

  13. echo 完成!
  14. pause
复制代码
  1. 解决方法如下:
  2. ::扩展显示器
  3. DisplaySwitch.exe /extend
  4. timeout 2

  5. ::导出显示配置
  6. MultiMonitorTool.exe /SaveConfig ".\config.cfg"

  7. ::从config.cfg中提取"Width=" "Height="两个值即可
复制代码



作者: 9zhmke    时间: 2024-12-22 20:28
批处理可以直接调用 WMIC,如果用批处理调用 VBS的话,刚好以前写过宽度这一段:
  1. Function GetScreenTureWidth() '取屏幕最高分辨率宽度
  2.         Set colItems = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_VideoController", "WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly)
  3.         For Each objItem In colItems:GetScreenTureWidth=objItem.CurrentHorizontalResolution:Next
  4. End Function
复制代码

批处理貌似更简单,不知道你想用分辨率来做什么,但需要注意一下的是,即使有了分辨率,还要重视缩放比例。





作者: 9zhmke    时间: 2024-12-22 20:31
刚试了用文心一言直接写了个,试了下可以用:
wmic path Win32_VideoController get VideoModeDescription /value
作者: Myptour    时间: 2024-12-22 20:42
9zhmke 发表于 2024-12-22 20:28
批处理可以直接调用 WMIC,如果用批处理调用 VBS的话,刚好以前写过宽度这一段:
批处理貌似更简单,不知 ...

有多个显示器,想获取"扩展屏幕"的分辨率,不是主显的分辨率,找不到更好的办法,似乎都有一定延迟
作者: nttwqz    时间: 2024-12-22 20:48
没有其它显示器,没有测试出dxdiag有任何延迟。
作者: dwso    时间: 2024-12-23 09:49
谢谢分享
作者: guong    时间: 2024-12-23 13:12
来了解下
作者: 9zhmke    时间: 2024-12-23 20:27
刚才用文心一言写了一段,在我的电脑上可以取到分辨率:
  1. # 确保加载了 System.Windows.Forms 程序集
  2. Add-Type -AssemblyName System.Windows.Forms

  3. # 初始化一个计数器来跟踪显示器
  4. $monitorIndex = 1

  5. # 遍历所有屏幕并输出它们的分辨率
  6. foreach ($screen in [System.Windows.Forms.Screen]::AllScreens) {
  7.     $resolution = "$($screen.Bounds.Width)x$($screen.Bounds.Height)"
  8.     Write-Output "Display ${monitorIndex}: ${resolution}"
  9.     $monitorIndex++
  10. }
复制代码

我保存成了c:\aaa.ps1
C:\>powershell c:\aaa.ps1
Display 1: 1707x960
Display 2: 1920x1080
作者: qq1368427197    时间: 2024-12-25 14:15
1
作者: nianyueriPE    时间: 2024-12-25 14:19
谢谢分享
作者: nianyueriPE    时间: 2024-12-25 14:19
下载试试
作者: Myptour    时间: 2024-12-27 21:59
9zhmke 发表于 2024-12-23 20:27
刚才用文心一言写了一段,在我的电脑上可以取到分辨率:

我保存成了c:\aaa.ps1

受DPI影响,分辨率可能不准确

找到了第三方小程序,可以秒速获取真实值
作者: k8_ka    时间: 2024-12-28 08:57

感谢分享
作者: zifeng    时间: 2025-1-14 18:34
感谢分享
作者: wn168cn@163.com    时间: 2025-1-14 18:48
感谢分享
作者: szwp    时间: 2025-1-14 19:16
强大的bat
作者: fegr    时间: 2025-1-17 13:26
感谢分享
作者: brant8    时间: 2025-1-24 09:40
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3