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

[注册表类] (已解决)批处理怎样修改注册表路径导入注册表?

[复制链接]
发表于 2018-9-2 22:28:02 | 显示全部楼层 |阅读模式
求reg注册表文件,主键替换后导入注册表的批处理

把reg注册表文件,拖拽到批处理上,完成替换文件内主键!
替换主键规则如下:
HKEY_LOCAL_MACHINE\SYSTEM        替换为   HKEY_LOCAL_MACHINE\PE-SYS
HKEY_LOCAL_MACHINE\SOFTWARE    替换为  HKEY_LOCAL_MACHINE\PE-SOF
HKEY_USERS\.DEFAULT                      替换为  HKEY_LOCAL_MACHINE\PE-DEF
HKEY_CLASSES_ROOT\Directory         替换为  HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory
HKEY_CURRENT_USER\Software         替换为   HKEY_LOCAL_MACHINE\PE-DEF\Software

例;源文件   HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage2
替换后   HKEY_LOCAL_MACHINE\PE-DEF\Software\Microsoft\Windows\CurrentVersion\Explorer\StartPage2
如规则内没有文件所需,提示后退出修改!修改主键完成以后保存文件,然后安照替换过的主键导入注册表内!…求大师们帮忙
这里有个REG 文件,用来测试用

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2018-9-3 07:02:15 | 显示全部楼层
那不是很简单吗,记事本查找替换就行了。
发表于 2018-9-3 11:23:23 | 显示全部楼层
举例:
  1. @echo off
  2. set "root=HKEY_LOCAL_MACHINE"
  3. PowerShell "(type a.reg) -replace '%root%\\SYSTEM', '%root%\PE-SYS' -replace '%root%\\SOFTWARE', '%root%\PE-SOF'>b.reg"
  4. pause
复制代码

评分

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

查看全部评分

发表于 2018-9-3 11:52:46 | 显示全部楼层
本帖最后由 xinxing124 于 2018-9-3 12:19 编辑

可以试试下面这种方式(拖拽a.reg到批处理文件上):
  1. @echo off
  2. (For /f "delims=" %%i in (%1) do (Set str=%%i
  3. SetLocal EnableDelayedExpansion
  4. Set str=!Str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!
  5. Set str=!Str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!
  6. Set str=!Str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!
  7. Set str=!Str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!
  8. Set str=!Str:HKEY_CURRENT_USER\Software=HKEY_LOCAL_MACHINE\PE-DEF\Software!
  9. echo !str!
  10. EndLocal
  11. ))>b.reg
  12. start b.reg
复制代码
 楼主| 发表于 2018-9-4 20:01:02 | 显示全部楼层
注册表拖拽到批处理上面,会生成一个B.reg的文件,但是内容却是空白的。所以导入也是失败回复 4# xinxing124
发表于 2018-9-4 21:17:10 | 显示全部楼层
把注册表文件等拖入双击运行后的窗口中。

  1. @echo off
  2. cd/d "%~dp0"
  3. setlocal EnableDelayedExpansion
  4. echo 把注册表文件拖到窗口中
  5. set /p var=
  6. for /f "delims=" %%a in ('type %var%') do (
  7.         set "str=%%a"
  8.         if "!str:~0,1!"=="[" echo;>>NewReg.reg
  9.         SET "str=!str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!"
  10.         SET "str=!str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!"
  11.         SET "str=!str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!"
  12.         SET "str=!str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!"
  13.         set "str=!str:HKEY_CURRENT_USER\SOFTWARE=HKEY_LOCAL_MACHINE\PE-DEF\SOFTWARE!"
  14.         ECHO !str!>>NewReg.reg
  15. )
  16. echo 按任意键导入注册表 & pause >nul & regedit /s NewReg.reg
  17. pause & exit
复制代码
============================

评分

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

查看全部评分

 楼主| 发表于 2018-9-5 04:01:54 | 显示全部楼层
回复 6# xczxczxcz


    谢谢!有没有办法以管理员身份运行也能实现同样效果,这个批处理是和别的脚本一起使用,别的几个需要管理员权限
发表于 2018-9-5 08:22:58 | 显示全部楼层
回复 7# wchong

参考 http://www.bathome.net/thread-49107-1-1.html
在批的@echo off 的末尾回车再加上

  1. >nul 2>&1 "%windir%\system32\cacls.exe" "%windir%\system32\config\system"
  2. if '%errorlevel%' NEQ '0' (  echo UAC... & goto UACPrompt ) else goto gotAdmin
  3. :UACPrompt
  4. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
  5. echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
  6. "%temp%\getadmin.vbs"
  7. exit /B
  8. :gotAdmin
  9. if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
复制代码
其它的批也加上。
win7 + 的系统都可以用。
发表于 2018-9-5 09:01:45 | 显示全部楼层
回复 7# wchong


试试这几个方法:
http://bbs.bathome.net/thread-49107-1-1.html
发表于 2018-9-5 09:58:34 | 显示全部楼层
回复 5# wchong


    还真是,之前试验是建立了个txt文件试验的没问题,早上试了reg文件是空的。还要改下:
其中的 %file% 改成 'type %file%' 就可以了。
  1. @echo off
  2. set file=%1
  3. (For /f "delims=" %%i in ('type %file%') do (Set str=%%i
  4. SetLocal EnableDelayedExpansion
  5. Set str=!Str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!
  6. Set str=!Str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!
  7. Set str=!Str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!
  8. Set str=!Str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!
  9. Set str=!Str:HKEY_CURRENT_USER\Software=HKEY_LOCAL_MACHINE\PE-DEF\Software!
  10. echo !str!
  11. EndLocal
  12. ))>b.txt
  13. start b.txt
  14. pause
复制代码

评分

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

查看全部评分

 楼主| 发表于 2018-9-6 02:28:25 | 显示全部楼层
回复 10# xinxing124


    多谢,已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 03:28 , Processed in 0.034179 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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