[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
有没有具体的例子来说明“结果大不相同”?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

DOS资源站的东西很多都是从CN-DOS直接kiang过去的,只是修改了一下作者信息就据为己有了。

【方案一】BAT
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo @echo off>%~n1.bat
  4. for /f "skip=2 eol=' tokens=*" %%i in ('type %~1') do (
  5. set char=%%i
  6. set char=!char:~0,1!
  7. if !char!==[- goto del
  8. if !char!==[ (
  9. set key=%%i
  10. set key=!key:[HKEY_LOCAL_MACHINE=HKLM!
  11. set key=!key:[HKEY_CURRENT_USER=HKCU!
  12. set key=!key:[HKEY_CLASSES_ROOT=HKCR!
  13. set key=!key:[HKEY_USERS=HKU!
  14. set key=!key:[HKEY_CUREENT_CONFIG=HKCC!
  15. set key=!key:]=!
  16. ) else (
  17. set vtd=%%i
  18. for /f "tokens=1,2* delims==" %%i in ("!vtd!") do (
  19. set v=%%i
  20. set d=%%j
  21. set type=!d:~0,4!
  22. set t=reg_sz
  23. if !type!==dwor set t=reg_dword&set d=!d:dword:=!&set d=0x!d!
  24. if !type!==hex: set t=reg_binary&set d=!d:hex:=!&set d=!d:,=!
  25. set d=!d:\\=\!
  26. set d=!d:%%=%%%%!
  27. if !v!==@ set v=""
  28. echo reg add "!key!" /v !v! /t !t! /d !d! /f>>%~n1.bat
  29. )
  30. )
  31. )
  32. type %~n1.bat | find "reg">nul 2>nul&&goto :eof
  33. :del
  34. set key=!key:[-HKEY_LOCAL_MACHINE=HKLM!
  35. set key=!key:[-HKEY_CURRENT_USER=HKCU!
  36. set key=!key:[-HKEY_CLASSES_ROOT=HKCR!
  37. set key=!key:[-HKEY_USERS=HKU!
  38. set key=!key:[-HKEY_CUREENT_CONFIG=HKCC!
  39. set key=!key:]=!
  40. 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/
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表