无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 674|回复: 19
打印 上一主题 下一主题

[已解决] 注册表指定项下所有包含指定字符串的键值修改为另一指定字符串

[复制链接]
跳转到指定楼层
1#
发表于 2024-3-13 08:27:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 houxiren 于 2024-3-13 16:29 编辑

感谢10楼 hua_wuxin 前辈,完美解决。

reg query "HKEY_CLASSES_ROOT\*\shell" /s
以上查询代码返回以下结果
HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty
    (默认)    REG_SZ    删除空文件
    Icon    REG_SZ    E:\1\1.exe

HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty\command
    (默认)    REG_SZ    cmd.exe /c ""E:\Software\2\2.exe" "%1"&&type NUL > "%1"

HKEY_CLASSES_ROOT\*\shell\EverythingSearch
    (默认)    REG_SZ    Everything搜索
    Icon    REG_SZ    E:\Software\Everything\Everything.exe

HKEY_CLASSES_ROOT\*\shell\EverythingSearch\command
    (默认)    REG_SZ    "E:\Software\Everything\EverythingSearchLikeThisFile.bat" "%1"

如何把健值中的“E:\Software”替换为“D:\Software”,修改结果如下,(备注:如果可以的话,不要用导出reg文件,修改reg文件再导入的方法。)感谢帮助

HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty
    (默认)    REG_SZ    删除空文件
    Icon    REG_SZ    E:\1\1.exe

HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty\command
    (默认)    REG_SZ    cmd.exe /c ""D:\Software\2\2.exe" "%1"&&type NUL > "%1"

HKEY_CLASSES_ROOT\*\shell\EverythingSearch
    (默认)    REG_SZ    Everything搜索
    Icon    REG_SZ    D:\Software\Everything\Everything.exe

HKEY_CLASSES_ROOT\*\shell\EverythingSearch\command
    (默认)    REG_SZ    "D:\Software\Everything\EverythingSearchLikeThisFile.bat" "%1"


2#
发表于 2024-3-13 08:41:46 | 只看该作者
回复下载 感谢分享
回复

使用道具 举报

3#
发表于 2024-3-13 08:43:24 来自手机 | 只看该作者
楼主如果没有批量处理需求, 大可不必编写批处理,能达到目的就好,RegWorkShop就支持这种替换。

点评

前辈,好。多次得你帮助,再次感谢。RegWorkShop替换我会。 确实是想学习批处理替换。望指导。  详情 回复 发表于 2024-3-13 09:27
回复

使用道具 举报

4#
发表于 2024-3-13 08:56:53 | 只看该作者
感谢分享
回复

使用道具 举报

5#
发表于 2024-3-13 09:13:29 | 只看该作者
帮顶
回复

使用道具 举报

6#
 楼主| 发表于 2024-3-13 09:27:36 | 只看该作者
nttwqz 发表于 2024-3-13 08:43
楼主如果没有批量处理需求, 大可不必编写批处理,能达到目的就好,RegWorkShop就支持这种替换。

前辈,好。多次得你帮助,再次感谢。RegWorkShop替换我会。

确实是想学习批处理替换。望指导。
回复

使用道具 举报

7#
发表于 2024-3-13 09:41:29 | 只看该作者
等高手出手
回复

使用道具 举报

8#
发表于 2024-3-13 09:57:39 | 只看该作者
本帖最后由 9zhmke 于 2024-3-13 10:03 编辑

你说的替换路径这种事情,经常会在绿化过程中遇到,我弄的这个PDF中的段落给你参考下:其中,PDFXEdit.reg是在安装过程中跟踪下来的注册表变化,变量p替换当前路径中的单斜杠为双斜杠。
关键步骤:set "a=!a:C:\\Program Files (x86)\\Tracker Software\\PDF Viewer=%p%!"
这里使用批处理中的替换功能把原目录字符串替换成变量p中的文件夹
  1. setlocal enabledelayedexpansion
  2. del tmp.reg 2>nul
  3. set p=%cd:\=\\%
  4. for /f "tokens=*" %%i in ('type PDFXEdit.reg') do (
  5.     set a=%%i
  6.     set "a=!a:C:\\Program Files (x86)\\Tracker Software\\PDF Viewer=%p%!"
  7.     echo !a! >>tmp.reg
  8.     )
复制代码

点评

感谢帮助。可否不用 reg 文件的方式,并给出成品代码?我应变水平不够。再次感谢!~  详情 回复 发表于 2024-3-13 10:05
回复

使用道具 举报

9#
 楼主| 发表于 2024-3-13 10:05:51 | 只看该作者
9zhmke 发表于 2024-3-13 09:57
你说的替换路径这种事情,经常会在绿化过程中遇到,我弄的这个PDF中的段落给你参考下:其中,PDFXEdit.reg ...

感谢帮助。可否不用 reg 文件的方式,并给出成品代码?我应变水平不够。再次感谢!~

点评

reg add的速度慢很多,可以考虑下使用reg  详情 回复 发表于 2024-3-13 14:24
回复

使用道具 举报

10#
发表于 2024-3-13 11:30:16 | 只看该作者
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,*" %%I in ('reg query "HKEY_CLASSES_ROOT\*\shell" /s') do (
  set value=%%I
  set type=%%J
  set data=%%K
  
  if /i "!value:~0,5!"=="HKEY_" (
    set key=!value!
  ) else (
    if not "!data!"=="" (
      set newdata=!data:E:\Software=D:\Software!
      if not "!newdata!"=="!data!" (
        ::将数据中的"替换为\"以免reg add时被胡乱匹配
        set newdata=!newdata:"=\"!
        if "!value!"=="(默认)" (
          reg add "!key!" /ve          /t !type! /d "!newdata!" /f
        ) else (
          reg add "!key!" /v "!value!" /t !type! /d "!newdata!" /f
        )
      )
    )
  )
)

点评

感谢您!完美解决。感谢!!!~~  详情 回复 发表于 2024-3-13 16:27
感谢您,马上试用。回头再汇报。  详情 回复 发表于 2024-3-13 16:15
回复

使用道具 举报

11#
发表于 2024-3-13 12:24:37 | 只看该作者
本帖最后由 ppll2030 于 2024-3-13 12:32 编辑

如果楼主是要做一键绿化的话,还是用批处理调用reg文件导入来的便捷。
批处理直接处理注册表的代码相对繁琐,不够直观,而且转换很是麻烦。
而reg文件查看方便,用文本替换或是批处理修改都相对更加简单方便。
根据你的提供的两段,给你转成bat。对比一下就知道了。
reg add "HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty" /f /ve /t REG_SZ /d "删除空文件"
reg add "HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty" /f /v "Icon" /t REG_SZ /d "E:\1\1.exe"
reg add "HKEY_CLASSES_ROOT\*\shell\DeleteBuildEmpty\command" /f /ve /t REG_SZ /d "cmd.exe /c ""D:\Software\2\2.exe"\" \"%%1\"&&type NUL > "\"%%1\"

reg add "HKEY_CLASSES_ROOT\*\shell\EverythingSearch" /f /ve /t REG_SZ /d "Everything搜索"
reg add "HKEY_CLASSES_ROOT\*\shell\EverythingSearch" /f /v "Icon" /t REG_SZ /d "D:\Software\Everything\Everything.exe"
reg add "HKEY_CLASSES_ROOT\*\shell\EverythingSearch\command" /f /ve /t REG_SZ /d "\"D:\Software\Everything\EverythingSearchLikeThisFile.bat\" \"%%1\"

点评

感谢您。主要是要学习查找-替换,目标键值是不确定的,你的写法是针对确定键值的,不适用。再次感谢。  详情 回复 发表于 2024-3-13 16:14
回复

使用道具 举报

12#
发表于 2024-3-13 14:24:54 | 只看该作者
houxiren 发表于 2024-3-13 10:05
感谢帮助。可否不用 reg 文件的方式,并给出成品代码?我应变水平不够。再次感谢!~

reg add的速度慢很多,可以考虑下使用reg

点评

不考虑速度方面,可否帮写下代码?感谢。  详情 回复 发表于 2024-3-13 16:15
回复

使用道具 举报

13#
 楼主| 发表于 2024-3-13 16:14:28 | 只看该作者
ppll2030 发表于 2024-3-13 12:24
如果楼主是要做一键绿化的话,还是用批处理调用reg文件导入来的便捷。
批处理直接处理注册表的代码相对繁 ...

感谢您。主要是要学习查找-替换,目标键值是不确定的,你的写法是针对确定键值的,不适用。再次感谢。
回复

使用道具 举报

14#
 楼主| 发表于 2024-3-13 16:15:00 | 只看该作者
9zhmke 发表于 2024-3-13 14:24
reg add的速度慢很多,可以考虑下使用reg

不考虑速度方面,可否帮写下代码?感谢。
回复

使用道具 举报

15#
 楼主| 发表于 2024-3-13 16:15:49 | 只看该作者
hua_wuxin 发表于 2024-3-13 11:30
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,*" %%I in ('reg query "HKEY_CLASSES_R ...

感谢您,马上试用。回头再汇报。
回复

使用道具 举报

16#
 楼主| 发表于 2024-3-13 16:27:41 | 只看该作者
hua_wuxin 发表于 2024-3-13 11:30
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2,*" %%I in ('reg query "HKEY_CLASSES_R ...

感谢您!完美解决。感谢!!!~~
回复

使用道具 举报

17#
发表于 2024-3-16 10:04:33 | 只看该作者
感谢你,感谢
回复

使用道具 举报

18#
发表于 2024-3-16 12:54:55 | 只看该作者
好像很厉害的样子 看看
回复

使用道具 举报

19#
发表于 2024-3-16 18:46:44 | 只看该作者
谢谢分享
回复

使用道具 举报

20#
发表于 2024-3-31 20:53:00 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-1 19:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表