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

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

求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 文件,用来测试用
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

那不是很简单吗,记事本查找替换就行了。

TOP

举例:
  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

评分人数

TOP

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

TOP

注册表拖拽到批处理上面,会生成一个B.reg的文件,但是内容却是空白的。所以导入也是失败回复 4# xinxing124

TOP

把注册表文件等拖入双击运行后的窗口中。
  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

评分人数

TOP

回复 6# xczxczxcz


    谢谢!有没有办法以管理员身份运行也能实现同样效果,这个批处理是和别的脚本一起使用,别的几个需要管理员权限

TOP

回复 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 + 的系统都可以用。

TOP

回复 7# wchong


试试这几个方法:
http://bbs.bathome.net/thread-49107-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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

评分人数

TOP

回复 10# xinxing124


    多谢,已解决

TOP

返回列表