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

[文本处理] 【已解决】求合并.reg文件的批处理,谢谢

[复制链接]
发表于 2025-12-6 21:15:06 | 显示全部楼层
回复 14# yyz219

我的测试环境是 win11 24H2,三个示例文件分别存为 ansi(即gb2312)和 utf-8 编码(其须先切换 chcp 65001)完成两次实测,结果 all.reg 除编码有别,内容完全相同,如下所示:

  1. Windows registry editor version 5.00

  2. ; Ctrl+z —— 能撤销,Ctrl+y —— 能重做
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D001F200-EF97-11CE-9BC9-00AA00608E01}]
  4. @="IOleUndoManager"

  5. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D001F200-EF97-11CE-9BC9-00AA00608E01}\NumMethods]
  6. @="15"

  7. [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{D001F200-EF97-11CE-9BC9-00AA00608E01}\ProxyStubClsid32]
  8. @="{B196B286-BAB4-101A-B69C-00AA00341D07}"

  9. ;【注】"TaskbarColor"——dword:00000000(黑色),【"TaskbarAlpha"】——dword:0000007f半透明,dword:00000000全透明

  10. [HKEY_CURRENT_USER\Software\StartIsBack]
  11. ;任务栏颜色:黑色半透明
  12. "TaskbarColor"=dword:00000000
  13. "TaskbarAlpha"=dword:0000007f

  14. ;黃金色
  15. "AccentColor"=dword:ff00b9ff
  16. "ColorizationAfterglow"=dword:c4ffb900
  17. "ColorizationColor"=dword:c4ffb900

复制代码
 楼主| 发表于 2025-12-6 22:01:50 | 显示全部楼层
本帖最后由 yyz219 于 2025-12-6 22:08 编辑

回复 16# aloha20200628

;黃金色下面的丢了一行啊
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\DWM]
发表于 2025-12-6 22:20:19 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-12-6 23:50 编辑

回复 17# yyz219

抱歉,丢了一个参数,进一步订正如下...

  1. @echo off
  2. (echo,Windows registry editor version 5.00
  3. for /f "delims=" %%F in ('dir /b/a-d *.reg') do findstr /ivc:"Windows registry editor version 5.00" "%%F")>"#.$"
  4. ren "#.$" "all.reg"
  5. pause&exit/b
复制代码
另注》在 win11 24H2 环境中实测以上代码,还须用更名操作 '过桥' 否则会重复输出内容...

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-12-7 07:32:13 | 显示全部楼层
回复 18# aloha20200628

试一试先 谢谢
 楼主| 发表于 2025-12-7 07:37:43 | 显示全部楼层
回复 18# aloha20200628

有问题
 楼主| 发表于 2025-12-7 07:58:45 | 显示全部楼层
下面好像可以(还需要慢慢测试):
@echo off
type "*.reg" >> temp.lings

(echo,Windows registry editor version 5.00
for /f "delims=" %%F in ('dir /b/a-d temp.lings') do findstr /ivc:"Windows registry editor version 5.00" "%%F")>"all.reg"
del temp.lings
exit/b
发表于 2025-12-7 09:20:01 | 显示全部楼层
  1. @echo off
  2. >"合并的.reg" echo Windows registry editor version 5.00
  3. type "*.reg" | findstr /ivc:"Windows registry editor version 5.00" >> "合并的.reg"
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-12-7 09:51:39 | 显示全部楼层
回复 22# ShowCode


    我试一试 谢谢
 楼主| 发表于 2025-12-7 10:00:56 | 显示全部楼层
回复 22# ShowCode


    很好,简洁好用

    再次感谢
发表于 2025-12-7 11:41:55 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-12-7 11:44 编辑

回复 23# yyz219

原以为此帖解法很简单,实测下来却是一路拷问 findstr/find/type 三者对源文件末尾是否有空行的处理结果,以下是一个小结...

方法一。可兼容源文件 *.reg 末尾有无空行

  1. @echo off
  2. (echo,Windows registry editor version 5.00
  3. for /f "delims=" %%F in ('dir /b/a-d *.reg') do findstr /ivc:"Windows registry editor version 5.00" "%%F")>#.$
  4. ren #.$ all.reg
  5. pause&exit/b
复制代码
方法二。要求源文件数据行不包含 "---------- " 字符串

  1. @echo off
  2. (echo,Windows registry editor version 5.00
  3. find /i /v "Windows registry editor version 5.00" *.reg|find /v "---------- ")>all.reg
  4. pause&exit/b
复制代码
方法三。要求源文件 *.reg 末尾须有空行

  1. @echo off
  2. (echo,Windows registry editor version 5.00
  3. type *.reg 2>nul|findstr /ivc:"Windows registry editor version 5.00")>all.reg
  4. pause&exit/b
复制代码
方法四。要求源文件 *.reg 末尾须有空行

  1. @echo off
  2. (echo,Windows registry editor version 5.00
  3. for /f "tokens=1* delims=:" %%a in ('findstr /ivc:"Windows registry editor version 5.00" *.reg') do echo,%%b)>all.reg
  4. pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
yyz219 + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-12-7 11:54:53 | 显示全部楼层
回复 25# aloha20200628

我慢慢琢磨,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:05 , Processed in 0.030090 second(s), 13 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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