DOS资源站的东西很多都是从CN-DOS直接kiang过去的,只是修改了一下作者信息就据为己有了。
【方案一】BAT- @echo off
- setlocal enabledelayedexpansion
- echo @echo off>%~n1.bat
- for /f "skip=2 eol=' tokens=*" %%i in ('type %~1') do (
- set char=%%i
- set char=!char:~0,1!
- if !char!==[- goto del
- if !char!==[ (
- set key=%%i
- set key=!key:[HKEY_LOCAL_MACHINE=HKLM!
- set key=!key:[HKEY_CURRENT_USER=HKCU!
- set key=!key:[HKEY_CLASSES_ROOT=HKCR!
- set key=!key:[HKEY_USERS=HKU!
- set key=!key:[HKEY_CUREENT_CONFIG=HKCC!
- set key=!key:]=!
- ) else (
- set vtd=%%i
- for /f "tokens=1,2* delims==" %%i in ("!vtd!") do (
- set v=%%i
- set d=%%j
- set type=!d:~0,4!
- set t=reg_sz
- if !type!==dwor set t=reg_dword&set d=!d:dword:=!&set d=0x!d!
- if !type!==hex: set t=reg_binary&set d=!d:hex:=!&set d=!d:,=!
- set d=!d:\\=\!
- set d=!d:%%=%%%%!
- if !v!==@ set v=""
- echo reg add "!key!" /v !v! /t !t! /d !d! /f>>%~n1.bat
- )
- )
- )
- type %~n1.bat | find "reg">nul 2>nul&&goto :eof
-
- :del
- set key=!key:[-HKEY_LOCAL_MACHINE=HKLM!
- set key=!key:[-HKEY_CURRENT_USER=HKCU!
- set key=!key:[-HKEY_CLASSES_ROOT=HKCR!
- set key=!key:[-HKEY_USERS=HKU!
- set key=!key:[-HKEY_CUREENT_CONFIG=HKCC!
- set key=!key:]=!
- echo reg delete "!key!" /f >>%~n1.bat
复制代码
这段代码增加了以下功能:
1 去掉二进制分隔符, 使其能处理二进制数据.
2 增强dword的处理功能,使其值大于9时,而不会产生错误.
3 增加了对默认值的处理.
4 增加了对百分号和双斜杠的处理.
5 增加了对以'开头的注释行的处理.
6 增加了对删除子键的.reg文件的处理(必须手工编辑,注册表无法导出这样的文件)
修改后的代码虽然对转换后文件一般能正确执行(符合.reg文件的原意),但是无法体现 reg 命令的使用技巧.比如处理后dword值特别繁琐,如其值为0时,可不用/d参数.并且对默认值的处理没有使用/ve 参数,而将其设为"".还有虽然能处理删除子键,但是其下如果有其它值,将不作处理.曾把默认值处理为 /ve ,但是和处理删除子键一样.
没有对可扩充字符串值hex(2)作处理,因为根本就无法处理.
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=32748
【方案二】reg2inf.exe
.Reg => .Inf 转换器 Reg2Inf.EXE
这是一个Windows Console程序,可以按照 .Reg 的“注册表项”文件,生成 .Inf 的“安装信息”文件。
由于在一般情况下, .Reg被引入到注册表中时,只能增加新的键,或者修改原有的键,却不能删除已经存在的键。而我们在系统维护中,为了保存一些设置而导出注册表的某个部分,存为 .Reg了,在恢复设置时,我们希望得到的结果,应该是原模原样地恢复,而不是残留一些不知会起什么副作用的垃圾,那么这时候,Reg2Inf就有用了。
This program generates .Inf file from a .Reg file. (by [email]kajaa@eastday.com[/email])
Syntax: Reg2Inf [switches] [ [DestFile.Inf]]
switches:
-w output WHOLE keyname instead of abbreviation
-t output in TINY mode, no comments
官网下载:http://kajaa.bbs.us/ |