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

[文件操作] [已解决]如何用批处理将reg文件转为bat文件

本帖最后由 yunyan100 于 2013-3-15 12:12 编辑

如题,我想实现在的功能是,运行该批理后,当前文件夹下的所有reg文件转换为同文件名的bat文件,不是将reg文件全转换为一个bat文件,下面这段代码就是将所有的reg文件都转到了一个bat文件里,请问我的这种想法能实现吗?如能,还请大家给补补课,谢谢
  1. @echo off
  2. color a
  3. mode con cols=20 lines=3
  4. setlocal enabledelayedexpansion
  5. echo.>_may.bat
  6. for /f "skip=2 tokens=*" %%i in ('type *.reg') do (
  7. set char=%%i
  8. set char=!char:~0,1!
  9. if !char!==[ (
  10. set key=%%i
  11. set key=!key:[HKEY_LOCAL_MACHINE=HKLM!
  12. set key=!key:[HKEY_CURRENT_USER=HKCU!
  13. set key=!key:[HKEY_CLASSES_ROOT=HKCR!
  14. set key=!key:[HKEY_USER=HKU!
  15. set key=!key:[HKEY_CUREENT_CONFIG=HKCC!
  16. set key=!key:]=!
  17. ) else (
  18. set vtd=%%i
  19. for /f "tokens=1,2* delims==" %%i in ("!vtd!") do (
  20. set v=%%i
  21. set d=%%j
  22. set t=REG_SZ
  23. set type=!d:~0,4!
  24. if !type!==dwor set t=REG_DWORD && set d=!d:dword:=!
  25. if !type!==hex: set t=REG_BINARY && set d=!d:,=! && d=!d:hex:=!
  26. echo reg add "!key!" /v !v! /t !t! /d !d! /f>>may.bat
  27. )
  28. )
  29. )
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.reg) do (
  4.     >%%~na.bat type nul
  5.     for /f "skip=2 tokens=*" %%b in ('type %%a') do (
  6.         set char=%%b
  7.         set char=!char:~0,1!
  8.         if !char!==[ (
  9.             set key=%%b
  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_USER=HKU!
  14.             set key=!key:[HKEY_CUREENT_CONFIG=HKCC!
  15.             set key=!key:]=!
  16.         ) else (
  17.             for /f "tokens=1,2* delims==" %%c in ("%%b") do (
  18.                 set v=%%c
  19.                 set d=%%d
  20.                 set t=REG_SZ
  21.                 set type=!d:~0,4!
  22.                 if !type!==dwor (
  23.                     set t=REG_DWORD
  24.                     set d=!d:dword:=!
  25.                 ) else if !type!==hex: (
  26.                     set t=REG_BINARY
  27.                     set d=!d:,=!
  28.                     set d=!d:hex:=!
  29.                 )
  30.                 >>%%~na.bat echo reg add "!key!" /v !v! /t !t! /d !d! /f
  31.             )
  32.         )
  33.     )
  34. )
复制代码

TOP

非常感谢bat-vbs,你给写的代码完全符合我的想法,那个链接里的只能是单个更改,不完美

TOP

回复 4# yunyan100


    问题解决后,请编辑顶楼帖子在标题前面注明[已解决],并给回答者加分。

TOP

本帖最后由 yunyan100 于 2013-3-15 12:10 编辑

BAT-VBS ,发现个问题,如果注册文件是[-HKEY_LOCAL_MACHINE\SOFTWARE\SWIFTDOG]这种格式的,并不能转为reg delete *****这种形式的,而还是reg add 形式的,这个能解决就很完美了,你给的链接中的vbs脚本倒时可以,只是不能批量

TOP

回复 5# BAT-VBS


    en

TOP

回复 6# yunyan100
  1. @echo off
  2. for %%a in (*.reg) do (
  3.     CScript Reg2Bat.vbs /i:%%a /o:%%~na.bat /Q
  4. )
复制代码

TOP

回复 8# BAT-VBS


    有法在之前那个批处理上做到吗,

TOP

返回列表