无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3957|回复: 4
打印 上一主题 下一主题

有没有REG2BAT的工具

[复制链接]
跳转到指定楼层
1#
发表于 2007-1-18 12:32:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
直接将注册表文件转换成批处理命令,哪位大侠有上传一个吧!
2#
发表于 2007-1-18 14:19:27 | 只看该作者
原帖由 Civiwu 于 2007-1-18 12:32 PM 发表
直接将注册表文件转换成批处理命令,哪位大侠有上传一个吧!

来自vkill' Blog:http://blog.yx127.com/?action=show&id=192

sed下载:http://www.yx127.com/tools/sed_4.0.7x.rar
原下载地址有问题,故直接从vkill'tool中引过来
  1. REG2BAT.bat
  2. @echo off
  3. setlocal enabledelayedexpansion
  4. title reg2bat by:vkill

  5. ::注意:注册表项中不可有=,项目、名字、数值中不可有"

  6. ::config
  7. set "temp=temp_.txt"
  8. set "life_b=bats_.bat"

  9. :test
  10. cls
  11. if not *%1==* (set "life_r=%1") else (
  12.     echo 只支持单文件,多文件请使用*.reg
  13.     set life_r=
  14.     set /p life_r=请把要转化的reg文件拖到本窗口:
  15.     if %life_r%*==* goto test
  16.                                       )

  17. call :000 %life_r%
  18. goto :eof

  19. :000
  20. echo "%~1"|sed "s/\x22$//"|(findstr /E /I ".reg">nul ||(echo sorry要处理的不是reg文件&pause>nul&goto :eof))
  21. if not exist "%~1" (echo sorry要处理reg文件不存在&pause>nul&goto :eof)

  22. ::去除.reg的表头和所有空格
  23. if exist %temp%? del /f/q %temp%?
  24. type "%~1"|sed -e "/^REGEDIT4$/d;/^Windows Registry Editor Version 5.00$/d;/^$/d" -e "y/[/#/" |more>%temp%1
  25. cls

  26. ::显示错误并自动除错
  27. cd.>%temp%2
  28. sed "/^#HKEY_.*\.*]/d;/^.*=.*$/d" %temp%1|more>%temp%2
  29. findstr . %temp%2>nul ||(copy /y %temp%1 %temp%3>nul &goto start_)
  30. echo .reg文件中有错误,1秒后开始自动除错
  31. ping -n 2 127.1>nul
  32. sed -e "/^#HKEY_.*\.*]/b;/^.*=.*$/b" -e d %temp%1|more>%temp%3
  33. echo 除错完成

  34. :start_
  35. :去除[]",并转换数据类型,可继续添加数据类型
  36. sed -e "s/^#//;s/]$//" -e "s/\x22//g" %temp%3 |sed "s/=/=REG_SZ=/" |sed "s/=REG_SZ=dword:/=REG_DWORD=/;s/=REG_SZ=hex:/=REG_BINARY=/;s/=REG_SZ=hex(7):/=REG_MULTI_SZ=/;s/=REG_SZ=hex(2):/=REG_EXPAND_SZ=/" |sed "s/^[ \t]*//;s/[ \t]*$//" |sed "/^$/d"|more>%temp%4

  37. ::写日志
  38. >>%life_b% echo :: %date% %time% 添加

  39. ::写reg add
  40. for /f "tokens=1-3 delims==" %%a in (%temp%4) do (
  41. if not *%%b==* (if not !xiang!*==* >>%life_b% echo reg add "!xiang!" /v "%%~a" /t %%~b /d "%%~c" /f) else (set "xiang=%%~a")
  42.                                                     )

  43. if exist %life_b% (
  44.     echo 正在删除%life_b%中的相同行
  45.     ren %life_b% %temp%5
  46.     sed -n "G; s/\n/&&/; /^\([ -~]*\n\).*\n\1/d; s/\n//; h; P" %temp%5 |more>%life_b%
  47.     echo %life_b%中的相同行删除完成
  48.                   )

  49. del /f/q %temp%?
  50. echo ok %life_r%2bat转换完成,结果保存在了%life_b%文件中,程序1秒后自动退出
  51. ping -n 3 127.1>nul
  52. goto :eof
复制代码
回复

使用道具 举报

3#
发表于 2007-1-19 09:22:53 | 只看该作者
强人,学习了。那个博客很不错。
回复

使用道具 举报

4#
 楼主| 发表于 2007-1-19 15:52:47 | 只看该作者
好像不行哦,拖进REG后没反应?
回复

使用道具 举报

5#
发表于 2007-1-19 18:03:23 | 只看该作者
原代码是有点问题
  1. if not *%1==* (set "life_r=%1") else (
  2.     echo 只支持单文件,多文件请使用*.reg
  3.     set life_r=
  4.     set /p life_r=请把要转化的reg文件拖到本窗口:
  5.     if %life_r%*==* goto test
  6.                                       )
复制代码


改为
  1. if not *%1==* (set "life_r=%1") else (
  2.     echo 只支持单文件,多文件请使用*.reg
  3.     set life_r=
  4.     set /p life_r=请把要转化的reg文件拖到本窗口:
  5.      )   
  6. if %life_r%*==* goto test
  7.                                     
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 05:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表