标题: [注册表类] 【已解决】批处理修改注册表确定根目录、具体值,但不确定子目录项 [打印本页]
作者: kidzgy 时间: 2022-5-22 12:29 标题: 【已解决】批处理修改注册表确定根目录、具体值,但不确定子目录项
本帖最后由 kidzgy 于 2022-6-7 14:55 编辑
已知注册表项:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration,项下有多个三级目录,每个【Scaling】的整数值当为3的时候,表示全屏游戏时为扩充全屏(即不留黑边),整数值为4的时候,表示为比例全屏(即留左右黑边)。现有一个想法,欲通过批处理实现来回切换。
如图所示,首先我们称【Configuration】为根目录,根目录下的【一级目录】为混合字母数字的随机名称,每个【二级目录】的名称必有【00】、或有【01】,每个【三级目录】的名称必有【00】、或有【01】。
【Scaling】整数值在三级目录下,为3或4。
如果我通过下面代码即可实现路径【一级目录\00\00】的注册表值更改,但是无法具体针对到【00\01】【01\00】的注册表值。当然,如果硬要加上【一级目录\00\01】、【一级目录\01\00】也不是不可以,只是添加了几个注册表垃圾。- @echo off
- rem 3为扩充全屏(不留黑边)
- rem 4为比例全屏(留黑边)
- set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
- for /f "delims=" %%i in ('reg query %key%') do (
- reg add "%%i\00\00" /f /v "Scaling" /t REG_DWORD /d 4
- )
- pause
复制代码
试问:如何精确地再修改到对于可能存在【00】【01】的二级或三级目录下的Scaling值?
针对根目录,导出的注册表值为(已剔除无关要素):- Windows Registry Editor Version 5.00
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\MSBDD_NOEDID_8086_5912_00000000_00020000_0^B08740C2BFF214D42D46B3A10A98A6BA\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\MSNILNOEDID_1414_008D_FFFFFFFF_FFFFFFFF_0^030B4FCE00727AC1593E5B6FD18648D6\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD00021_0F_07E0_46^4D8DDDD6E25E4BDE2B94E5DFF11EE407\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD00021_0F_07E0_46^4D8DDDD6E25E4BDE2B94E5DFF11EE407\00\01]
- "Scaling"=dword:00000004
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD004A1_06_07E3_04^E2F6FE76B12A0D275F9A55FF2025AF3C\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD004A1_06_07E3_04^E2F6FE76B12A0D275F9A55FF2025AF3C\00\01]
- "Scaling"=dword:00000004
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD00021_0F_07E0_46^CB58B188A5CF30EAC37679DEA22A6977\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD00021_0F_07E0_46^CB58B188A5CF30EAC37679DEA22A6977\01\00]
- "Scaling"=dword:00000004
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD004A1_06_07E3_04^FADE41BB7FB9C81047368C07118D695A\00\00]
- "Scaling"=dword:00000003
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD004A1_06_07E3_04^FADE41BB7FB9C81047368C07118D695A\01\00]
- "Scaling"=dword:00000004
-
- [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E^05EF7AB21157FED8EC108446C5DE0BAE\00\00]
- "Scaling"=dword:00000003
复制代码
作者: Batcher 时间: 2022-5-22 13:18
回复 1# kidzgy
换个思路可以吗,比如你手工准备两个文件:
扩充全屏.reg
比例全屏.reg
需要哪个的时候就用 regedit /s 命令导入哪个
作者: kidzgy 时间: 2022-5-22 14:03
回复 2# Batcher
这样的话只能针对一台机子,不同的机子,一级目录是不同的。
作者: flashercs 时间: 2022-5-22 14:10
- @echo off
- rem 3为扩充全屏(不留黑边)
- rem 4为比例全屏(留黑边)
- set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
- for /f "delims=" %%A in ('reg query %key% /f * /k 2^>nul') do (
- for /f "delims=" %%B in ('reg query "%%A" /f * /k 2^>nul') do (
- for /f "delims=" %%C in ('reg query "%%B" /f * /k 2^>nul') do (
- reg add "%%C" /v "Scaling" /t REG_DWORD /d 4 /f
- )
- )
- )
- pause
复制代码
作者: kidzgy 时间: 2022-5-22 14:39
回复 4# flashercs
谢谢!太棒了,这么简短的代码。在你的基础上,我加了一个find,以便去除掉“查询结果”这个信息,更加完美!嘿嘿- @echo off
- rem 3为扩充全屏(不留黑边)
- rem 4为比例全屏(留黑边)
- set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
- for /f "delims=" %%A in ('reg query %key% /f * /k 2^>nul') do (
- for /f "delims=" %%B in ('reg query "%%A" /f * /k 2^>nul') do (
- for /f "delims=" %%C in ('
- reg query "%%B" /f * /k 2^>nul ^|
- find "Configuration"
- ') do (
- reg add "%%C" /v "Scaling" /t REG_DWORD /d 3 /f
- )
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |