Board logo

标题: [文本处理] 批处理如何获取屏幕/显示器当前的分辨率并修改指定ini文件里的相关参数值? [打印本页]

作者: houxiren    时间: 2016-6-15 03:01     标题: 批处理如何获取屏幕/显示器当前的分辨率并修改指定ini文件里的相关参数值?

本帖最后由 pcl_test 于 2016-6-15 10:02 编辑

根据电脑分辨率修改xn.ini文件,然后运行同目录下的xm.exe软件.
比如当前分辨率是1920*1080,则修改为
[Video]
ScreenWidth=1920
ScreenHeight=1080
如果换台电脑运行,分辨率为1366*788,则修改为
[Video]
ScreenWidth=1366
ScreenHeight=788

谢谢坛友相助!
作者: GNU    时间: 2016-6-15 10:18

  1. @echo off
  2. for /f "delims=" %%i in ('wmic DesktopMonitor get ScreenWidth^,ScreenHeight /value ^| findstr "="') do (
  3.     set "%%i"
  4. )
  5. >xn.ini echo [Video]
  6. >>xn.ini echo ScreenWidth=%ScreenWidth%
  7. >>xn.ini echo ScreenHeight=%ScreenHeight%
  8. start "" "%~dp0xm.exe"
复制代码

作者: GNU    时间: 2016-6-15 10:32

  1. @echo off
  2. for /f "tokens=1,3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\UnitedVideo" /s') do (
  3.     if "%%i" equ "DefaultSettings.XResolution" (
  4.         set /a ScreenWidth=%%j
  5.     ) else (
  6.         if "%%i" equ "DefaultSettings.YResolution" (
  7.             set /a ScreenHeight=%%j
  8.         )
  9.     )
  10. )
  11. >xn.ini echo [Video]
  12. >>xn.ini echo ScreenWidth=%ScreenWidth%
  13. >>xn.ini echo ScreenHeight=%ScreenHeight%
  14. start "" "%~dp0xm.exe"
复制代码

作者: houxiren    时间: 2016-6-15 17:12

回复 3# GNU
谢谢您的回复。期待您的再次帮助。

用2楼的代码,能修改成功。但却把xn.ini文件中的其他所有内容都删除了,这样不行。
用3楼的代码,修改不成功,运行软件成功。
作者: 小程936    时间: 2016-6-17 22:18

本帖最后由 小程936 于 2016-6-17 23:35 编辑
  1. @echo off&set xn=xn.ini
  2. IF not EXIST %xn% echo 错误:找不到文件%xn%&pause>nul&exit
  3. for /f "delims=" %%i in ('wmic DesktopMonitor get ScreenWidth^,ScreenHeight /value ^| findstr "="') do set "%%i"
  4. >%xn%.1 (for /f "tokens=1* delims==" %%a in (%xn%) do (if "%%a" == "ScreenWidth" (echo+ScreenWidth=%ScreenWidth%) else (if "%%a" == "ScreenHeight" (echo+ScreenHeight=%ScreenHeight%) else (if "%%b" == "" (echo+%%a) else (echo+%%a=%%b)))))
  5. (del %xn%)&ren %xn%.1 %xn%
  6. echo start "" "%~dp0xm.exe"
复制代码
自动检测xn.ini是否存在,若不存在报错并退出
自动分析xn.ini文件并修改文件内容
本楼代码有一点小问题
第一个等于号右边为空白时=
输出
第一个等于号右边为空白时
删掉了第一个等于号。
楼下代码已修复此问题。
作者: 小程936    时间: 2016-6-17 22:54

本帖最后由 小程936 于 2016-6-17 23:31 编辑
  1. @echo off&set xn=xn.ini
  2. IF not EXIST %xn% echo 错误:找不到文件%xn%&pause>nul&exit
  3. for /f "delims=" %%i in ('wmic DesktopMonitor get ScreenWidth^,ScreenHeight /value ^| findstr "="') do set "%%i"
  4. for /f "delims=" %%z in (%xn%) do (set az=%%z)&call :小程936
  5. (del %xn%)&ren %xn%.1 %xn%
  6. start "" "%~dp0xm.exe"
  7. exit
  8. :小程936
  9. for /f "tokens=1 delims==" %%a in ("%az%") do (set aa=%%a)
  10. >>%xn%.1 (if "%aa%" == "ScreenWidth" (echo+ScreenWidth=%ScreenWidth%)&goto :eof
  11. if "%aa%" == "ScreenHeight" (echo+ScreenHeight=%ScreenHeight%)&goto :eof
  12. (echo+%az%)&goto :eof)
复制代码
自动检测xn.ini是否存在,若不存在报错并退出
自动分析xn.ini文件并修改文件内容
该版本相对上一版本便于理解且更稳定




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2