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

[文件操作] reg文件转bat的批处理代码咨询

  1. @echo off
  2. color a
  3. mode con cols=20 lines=3
  4. echo 请耐心等候...
  5. setlocal enabledelayedexpansion
  6. echo.>_tobat.bat
  7. for /f "skip=2 tokens=*" %%i in ('type reg.reg') do (
  8. set char=%%i
  9. set char=!char:~0,1!
  10. if !char!==[ (
  11. set key=%%i
  12. set key=!key:[HKEY_LOCAL_MACHINE=HKLM!
  13. set key=!key:[HKEY_CURRENT_USER=HKCU!
  14. set key=!key:[HKEY_CLASSES_ROOT=HKCR!
  15. set key=!key:[HKEY_USER=HKU!
  16. set key=!key:[HKEY_CUREENT_CONFIG=HKCC!
  17. set key=!key:]=!
  18. ) else (
  19. set vtd=%%i
  20. for /f "tokens=1,2* delims==" %%i in ("!vtd!") do (
  21. set v=%%i
  22. set d=%%j
  23. set t=REG_SZ
  24. set type=!d:~0,4!
  25. if !type!==dwor set t=REG_DWORD && set d=!d:dword:=!
  26. if !type!==hex: set t=REG_BINARY && set d=!d:,=! && d=!d:hex:=!
  27. echo reg add "!key!" /v !v! /t !t! /d !d! /f>>_tobat.bat
  28. )
  29. )
  30. )
复制代码
以上代码和转换软件“reg to bat”得出的结果大不相同。有无缺陷请教。
另是否可以拖动reg文件到cmd窗口然后自动转换?

原帖由 Batcher 于 2008-10-5 18:29 发表
有没有具体的例子来说明“结果大不相同”?

本文代码转换结果:
  1. reg add "HKCR\lnkfile" /v @ /t REG_SZ /d "快捷方式" /f
  2. reg add "HKCR\lnkfile" /v "EditFlags" /t REG_DWORD  /d 00000001 /f
  3. reg add "HKCR\lnkfile" /v "NeverShowExt" /t REG_SZ /d "" /f
  4. reg add "HKCR\lnkfile\CLSID" /v @ /t REG_SZ /d "{00021401-0000-0000-C000-000000000046}" /f
  5. reg add "HKCR\lnkfile\shellex\ContextMenuHandlers\Offline Files" /v @ /t REG_SZ /d "{750fdf0e-2a26-11d1-a3ea-080036587f03}" /f
  6. reg add "HKCR\lnkfile\shellex\DropHandler" /v @ /t REG_SZ /d "{00021401-0000-0000-C000-000000000046}" /f
  7. reg add "HKCR\lnkfile\shellex\IconHandler" /v @ /t REG_SZ /d "{00021401-0000-0000-C000-000000000046}" /f
  8. reg add "HKCR\lnkfile\shellex\PropertySheetHandlers\ShimLayer Property Page" /v @ /t REG_SZ /d "{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}" /f
复制代码


软件转换结果如下:
  1. @ECHO OFF
  2. > "%Temp%.\DefOpen.reg" ECHO Windows Registry Editor Version 5.00
  3. >>"%Temp%.\DefOpen.reg" ECHO.
  4. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile]
  5. >>"%Temp%.\DefOpen.reg" ECHO @="快捷方式"
  6. >>"%Temp%.\DefOpen.reg" ECHO "EditFlags"=dword:00000001
  7. >>"%Temp%.\DefOpen.reg" ECHO "NeverShowExt"=""
  8. >>"%Temp%.\DefOpen.reg" ECHO.
  9. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\CLSID]
  10. >>"%Temp%.\DefOpen.reg" ECHO @="{00021401-0000-0000-C000-000000000046}"
  11. >>"%Temp%.\DefOpen.reg" ECHO.
  12. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shell]
  13. >>"%Temp%.\DefOpen.reg" ECHO.
  14. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex]
  15. >>"%Temp%.\DefOpen.reg" ECHO.
  16. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers]
  17. >>"%Temp%.\DefOpen.reg" ECHO.
  18. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\Offline Files]
  19. >>"%Temp%.\DefOpen.reg" ECHO @="{750fdf0e-2a26-11d1-a3ea-080036587f03}"
  20. >>"%Temp%.\DefOpen.reg" ECHO.
  21. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\{00021401-0000-0000-C000-000000000046}]
  22. >>"%Temp%.\DefOpen.reg" ECHO.
  23. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\DropHandler]
  24. >>"%Temp%.\DefOpen.reg" ECHO @="{00021401-0000-0000-C000-000000000046}"
  25. >>"%Temp%.\DefOpen.reg" ECHO.
  26. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\IconHandler]
  27. >>"%Temp%.\DefOpen.reg" ECHO @="{00021401-0000-0000-C000-000000000046}"
  28. >>"%Temp%.\DefOpen.reg" ECHO.
  29. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\PropertySheetHandlers]
  30. >>"%Temp%.\DefOpen.reg" ECHO.
  31. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\shellex\PropertySheetHandlers\ShimLayer Property Page]
  32. >>"%Temp%.\DefOpen.reg" ECHO @="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"
  33. >>"%Temp%.\DefOpen.reg" ECHO.
  34. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\SuperMenu_Bak1]
  35. >>"%Temp%.\DefOpen.reg" ECHO.
  36. >>"%Temp%.\DefOpen.reg" ECHO [HKEY_CLASSES_ROOT\lnkfile\SuperMenu_Bak1\{00021401-0000-0000-C000-000000000046}]
  37. >>"%Temp%.\DefOpen.reg" ECHO.
  38. >>"%Temp%.\DefOpen.reg" ECHO.
  39. START /WAIT REGEDIT /S "%Temp%.\DefOpen.reg"
  40. DEL "%Temp%.\DefOpen.reg"
复制代码

TOP

原帖由 zqz0012005 于 2008-10-5 19:02 发表
楼主大哥是从cn-dos转过来的代码吧?好像cn-dos对代码缺陷讨论过,大哥没找到?我记得也有改进过的代码,我没有收藏
1、默认值问题,注册表中是@,reg命令中应该是/ve
2、百分号%问题,对于注册表中含%1等参数,ba ...

不是在cn-dos找到,是在DOS资源站 www.cmdos.net找到。

TOP

返回列表