那么最后东拼西凑的成品就是这样
我稍微注释一下
"
@echo off
title war3分辨率设置
rem 检测注册表内是否存在war3的分辨率这一项
reg query "HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video" 1>nul 2>nul&&goto :ch||echo 请运行一次war3设置分辨率后退出,然后启动本程序。&echo 任意键退出&pause>nul&exit
rem 提示使用者需不需要自动设置分辨率,默认为自动
:ch
setlocal enabledelayedexpansion
set Num=0123456789abcdef
set chose=y
set /p chose=是否自动设置分辨率?(默认为y)
rem 根据用户选择,获取用户输入或者自动获取分辨率的宽,然后转换为8位18进制(前补零)
if /i %chose%==y ( call :getProprty width w ) else ( set /p w=请输入宽:)
set /a Deca=w
set /a lena=8
:La
set /a Moda = Deca %% 16,Deca /= 16,lena-=1
set Hexa=!Num:~%Moda%,1!!Hexa!
if !Deca! geq 1 goto :La
for /l %%i in (1,1,%lena%) do ( set Hexa=0!Hexa! )
rem 同样获取高
if /i %chose%==y ( call :getProprty height h ) else ( set /p h=请输入高:)
set /a Decb=h
set /a lenb=8
:Lb
set /a Modb = Decb %% 16,Decb /= 16,lenb-=1
set Hexb=!Num:~%Modb%,1!!Hexb!
if !Decb! geq 1 goto :Lb
for /l %%i in (1,1,%lenb%) do ( set Hexb=0!Hexb! )
rem 生成reg文件并写入注册表
echo Windows Registry Editor Version 5.00>war3.reg
echo.>>war3.reg
echo [HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III\Video]>>war3.reg
echo "reswidth"^=dword:%Hexa%>>war3.reg
echo "cinematicwidth"^=dword:%Hexa%>>war3.reg
echo "resheight"^=dword:%Hexb%>>war3.reg
echo "cinematicheight"^=dword:%Hexb%>>war3.reg
regedit /s war3.reg
rem 删除临时文件并提示完成
del war3.reg /q
echo.
echo war3分辨率成功设置为%w%x%h%!
echo 任意键退出
pause>nul
exit
rem 重要的获取分辨率的函数
:getProprty
echo w = WScript.Arguments(0)> war3
echo With CreateObject^("htmlfile"^)>>war3
echo If w = "width" Then WScript.Echo .parentWindow.screen.Width>>war3
echo If w = "height" Then WScript.Echo .parentWindow.screen.Height>>war3
echo End With>>war3
for /f "delims=" %%z in ('cscript -nologo -e:vbs war3 "%1"') do (
if /i "%2"=="" (
echo %%z
) else (
set "%2=%%z"
)
)
del war3 /q
"
就酱!