批处理.怎样自动更改应用程序配置文件中的屏幕分辨率设置?

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:37:15
有一config.ini文本配置文件,文本中的第二行是HEIGH=xxx 第三行是 WIDTH=yyyy, 其中的xxxx(如768)和yyyy(如1280)是屏幕分辨率的高和宽值,我想实现自动取得当前分辨率后,先与config中的原有值进行比较,高宽都相同的话就不操作,如果有一个值不同就用当前值替换该值,两个都不同就替换两个,请不要不管原值是否与现值同否就直接用当前值替换,一定要有一比较过程,比较后再按需变更,求批文件实现。
谢谢fastslz的代码,不过我没能测试成功(运行后config.ini文件中的内容没有变化)

我再补充说明一下条件和需求:

有一软件只能以下面数种显示模式正常运行(不能用范围来概括,因为现在很多上网本显示模式不标准),否则可能不能显示,软件本身不能自动按当前电脑使用的分辨率来调整软件的显示模式.

config.ini文件其中的两行WIDTH= 和WIDTH= 是设定软件运行分辨率的。

要求:在运行该件前,用批处理判定当前电脑使用的分辨率是否是软件所能支持的模式之一,如是,将config中的相应值改为当前值让软件适应电脑,否则,将confgig中的值变为Heigh=600,Width=800让软件在窗口中运行

软件所支持的显示模式:800×480,800×600,1024×512,1024×600,1024×768,1280×600,1280×768,1280×800,1280×1024

简单地说就是:如果电脑当前显示模式是软件所能支持的9种显示模式之一,则将config.ini中的Heigh,Width赋为现值让软件按当前电脑模式显示,否则将confgig中的相应值变为Heigh=600,Width=800让软件在窗口中运行。

特别提醒:这个代码仅限于Windows XP 以上系统,Windows 2000都不支持(没有Wmic命令)

@echo off
for /f "delims=" %%i in ('Wmic DesktopMonitor Get ScreenHeight^,ScreenWidth /Value') do set "%%i">nul 2>nul
if not exist config.ini exit
for /f "delims=" %%i in ('findstr /i "Heigh= Width=" config.ini') do set "%%i">nul 2>nul
echo config配置模式 %Heigh%×%Width%
echo 当前显示模式 %ScreenHeight%×%ScreenWidth%
ping -n 3 127.1>nul 2>nul
if %ScreenHeight%%ScreenWidth% gtr 12801024 goto setting800600
if %ScreenHeight%%ScreenWidth% equ 800480 goto setting800600
findstr /i /c:"Heigh=%ScreenHeight%" config.ini||(findstr /i /v /c:"Heigh=" config.ini>config.x&&>>config.x echo Heigh=%ScreenHeight%&&move /y config.x config.ini)
findstr /i /c:"Width=%ScreenWidth%" config.ini||(findstr /i /v /c:"Width=" config.ini>config.x&&>>config.x echo Wi