标题: [注册表类] (已解决)批处理怎样修改注册表路径导入注册表? [打印本页]
作者: 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
举例:- @echo off
- set "root=HKEY_LOCAL_MACHINE"
- PowerShell "(type a.reg) -replace '%root%\\SYSTEM', '%root%\PE-SYS' -replace '%root%\\SOFTWARE', '%root%\PE-SOF'>b.reg"
- pause
复制代码
作者: xinxing124 时间: 2018-9-3 11:52
本帖最后由 xinxing124 于 2018-9-3 12:19 编辑
可以试试下面这种方式(拖拽a.reg到批处理文件上):- @echo off
- (For /f "delims=" %%i in (%1) do (Set str=%%i
- SetLocal EnableDelayedExpansion
- Set str=!Str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!
- Set str=!Str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!
- Set str=!Str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!
- Set str=!Str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!
- Set str=!Str:HKEY_CURRENT_USER\Software=HKEY_LOCAL_MACHINE\PE-DEF\Software!
- echo !str!
- EndLocal
- ))>b.reg
- start b.reg
复制代码
作者: wchong 时间: 2018-9-4 20:01
注册表拖拽到批处理上面,会生成一个B.reg的文件,但是内容却是空白的。所以导入也是失败回复 4# xinxing124
作者: xczxczxcz 时间: 2018-9-4 21:17
把注册表文件等拖入双击运行后的窗口中。- @echo off
- cd/d "%~dp0"
- setlocal EnableDelayedExpansion
- echo 把注册表文件拖到窗口中
- set /p var=
- for /f "delims=" %%a in ('type %var%') do (
- set "str=%%a"
- if "!str:~0,1!"=="[" echo;>>NewReg.reg
- SET "str=!str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!"
- SET "str=!str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!"
- SET "str=!str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!"
- SET "str=!str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!"
- set "str=!str:HKEY_CURRENT_USER\SOFTWARE=HKEY_LOCAL_MACHINE\PE-DEF\SOFTWARE!"
- ECHO !str!>>NewReg.reg
- )
- echo 按任意键导入注册表 & pause >nul & regedit /s NewReg.reg
- 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 的末尾回车再加上- >nul 2>&1 "%windir%\system32\cacls.exe" "%windir%\system32\config\system"
- if '%errorlevel%' NEQ '0' ( echo UAC... & goto UACPrompt ) else goto gotAdmin
- :UACPrompt
- echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /B
- :gotAdmin
- 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%' 就可以了。- @echo off
- set file=%1
- (For /f "delims=" %%i in ('type %file%') do (Set str=%%i
- SetLocal EnableDelayedExpansion
- Set str=!Str:HKEY_LOCAL_MACHINE\SYSTEM=HKEY_LOCAL_MACHINE\PE-SYS!
- Set str=!Str:HKEY_LOCAL_MACHINE\SOFTWARE=HKEY_LOCAL_MACHINE\PE-SOF!
- Set str=!Str:HKEY_USERS\.DEFAULT=HKEY_LOCAL_MACHINE\PE-DEF!
- Set str=!Str:HKEY_CLASSES_ROOT\Directory=HKEY_LOCAL_MACHINE\PE-SOF\Classes\Directory!
- Set str=!Str:HKEY_CURRENT_USER\Software=HKEY_LOCAL_MACHINE\PE-DEF\Software!
- echo !str!
- EndLocal
- ))>b.txt
- start b.txt
- pause
复制代码
作者: wchong 时间: 2018-9-6 02:28
回复 10# xinxing124
多谢,已解决
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |