[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 【已解决】批处理修改注册表确定根目录、具体值,但不确定子目录项

本帖最后由 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】也不是不可以,只是添加了几个注册表垃圾。
  1. @echo off
  2. rem   3为扩充全屏(不留黑边)
  3. rem   4为比例全屏(留黑边)
  4. set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
  5. for /f "delims=" %%i in ('reg query %key%') do (
  6. reg add "%%i\00\00" /f /v "Scaling" /t REG_DWORD /d 4
  7. )
  8. pause
复制代码
试问:如何精确地再修改到对于可能存在【00】【01】的二级或三级目录下的Scaling值?
针对根目录,导出的注册表值为(已剔除无关要素):
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\MSBDD_NOEDID_8086_5912_00000000_00020000_0^B08740C2BFF214D42D46B3A10A98A6BA\00\00]
  3. "Scaling"=dword:00000003
  4. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\MSNILNOEDID_1414_008D_FFFFFFFF_FFFFFFFF_0^030B4FCE00727AC1593E5B6FD18648D6\00\00]
  5. "Scaling"=dword:00000003
  6. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD00021_0F_07E0_46^4D8DDDD6E25E4BDE2B94E5DFF11EE407\00\00]
  7. "Scaling"=dword:00000003
  8. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD00021_0F_07E0_46^4D8DDDD6E25E4BDE2B94E5DFF11EE407\00\01]
  9. "Scaling"=dword:00000004
  10. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD004A1_06_07E3_04^E2F6FE76B12A0D275F9A55FF2025AF3C\00\00]
  11. "Scaling"=dword:00000003
  12. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E*XMD004A1_06_07E3_04^E2F6FE76B12A0D275F9A55FF2025AF3C\00\01]
  13. "Scaling"=dword:00000004
  14. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD00021_0F_07E0_46^CB58B188A5CF30EAC37679DEA22A6977\00\00]
  15. "Scaling"=dword:00000003
  16. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD00021_0F_07E0_46^CB58B188A5CF30EAC37679DEA22A6977\01\00]
  17. "Scaling"=dword:00000004
  18. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD004A1_06_07E3_04^FADE41BB7FB9C81047368C07118D695A\00\00]
  19. "Scaling"=dword:00000003
  20. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E+XMD004A1_06_07E3_04^FADE41BB7FB9C81047368C07118D695A\01\00]
  21. "Scaling"=dword:00000004
  22. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration\SDC49520_00_07DE_2E^05EF7AB21157FED8EC108446C5DE0BAE\00\00]
  23. "Scaling"=dword:00000003
复制代码

回复 4# flashercs


    谢谢!太棒了,这么简短的代码。在你的基础上,我加了一个find,以便去除掉“查询结果”这个信息,更加完美!嘿嘿
  1. @echo off
  2. rem   3为扩充全屏(不留黑边)
  3. rem   4为比例全屏(留黑边)
  4. set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
  5. for /f "delims=" %%A in ('reg query %key% /f * /k 2^>nul') do (
  6.     for /f "delims=" %%B in ('reg query "%%A" /f * /k 2^>nul') do (
  7.         for /f "delims=" %%C in ('
  8.     reg query "%%B" /f * /k 2^>nul ^|
  9.     find "Configuration"
  10.     ') do (
  11.           reg add "%%C" /v "Scaling" /t REG_DWORD /d 3 /f
  12.         )
  13.       )
  14.     )
  15. pause
复制代码

TOP

  1. @echo off
  2. rem   3为扩充全屏(不留黑边)
  3. rem   4为比例全屏(留黑边)
  4. set "key=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\Configuration"
  5. for /f "delims=" %%A in ('reg query %key% /f * /k 2^>nul') do (
  6.    for /f "delims=" %%B in ('reg query "%%A" /f * /k 2^>nul') do (
  7.     for /f "delims=" %%C in ('reg query "%%B" /f * /k 2^>nul') do (
  8.       reg add "%%C" /v "Scaling" /t REG_DWORD /d 4 /f
  9.     )
  10.   )
  11. )
  12. pause
复制代码
微信:flashercs
QQ:49908356

TOP

回复 2# Batcher

这样的话只能针对一台机子,不同的机子,一级目录是不同的。

TOP

回复 1# kidzgy


换个思路可以吗,比如你手工准备两个文件:
扩充全屏.reg
比例全屏.reg

需要哪个的时候就用 regedit /s 命令导入哪个
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表