Board logo

标题: [注册表类] (已解决)批处理怎样修改注册表路径导入注册表? [打印本页]

作者: wchong    时间: 2018-9-2 22:28     标题: (已解决)批处理怎样修改注册表路径导入注册表?

求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 文件,用来测试用
作者: 窄口牛    时间: 2018-9-3 07:02

那不是很简单吗,记事本查找替换就行了。
作者: WHY    时间: 2018-9-3 11: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
复制代码

作者: xinxing124    时间: 2018-9-3 11:52

本帖最后由 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
复制代码

作者: wchong    时间: 2018-9-4 20:01

注册表拖拽到批处理上面,会生成一个B.reg的文件,但是内容却是空白的。所以导入也是失败回复 4# xinxing124
作者: xczxczxcz    时间: 2018-9-4 21:17

把注册表文件等拖入双击运行后的窗口中。
  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
复制代码
============================
作者: wchong    时间: 2018-9-5 04:01

回复 6# xczxczxcz


    谢谢!有没有办法以管理员身份运行也能实现同样效果,这个批处理是和别的脚本一起使用,别的几个需要管理员权限
作者: xczxczxcz    时间: 2018-9-5 08:22

回复 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 + 的系统都可以用。
作者: Batcher    时间: 2018-9-5 09:01

回复 7# wchong


试试这几个方法:
http://bbs.bathome.net/thread-49107-1-1.html
作者: xinxing124    时间: 2018-9-5 09:58

回复 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
复制代码

作者: wchong    时间: 2018-9-6 02:28

回复 10# xinxing124


    多谢,已解决




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2