标题: reg 转 bat , 中有个没有解决的方法。。
[打印本页]
作者: icebat
时间: 2009-12-6 19:24
标题: reg 转 bat , 中有个没有解决的方法。。
:again
@echo off
color 0b
mode con: cols=90 lines=20
title "【REG 2 BAT 2 REG】 "
echo 【REG 2 BAT 2 REG】
echo.
echo.
echo 1.导出注册表为XX.reg
echo.
echo 2.把XX.reg拖入本程序窗口,在XX.reg的旁边生成XX_sourse.bat
echo.
echo 3.运行XX_sourse.bat 生成XX_new.reg
echo.
echo.
echo BY 搞爆地球 重庆理工大 , 2009.12.6
echo
http://hi.baidu.com/110denghai
echo.
echo.
:: ================================================
setlocal enabledelayedexpansion
set route=%cd%
set ravel=
set /p ravel= 请拖入要转换的注册表:
set "ravel=%ravel:"=%"
::=====================================
::下面是设置路径的倒退几层传递到rrrr
set "rrrr=%ravel%"
set layers_discard=1
if "%rrrr:~-1%"=="\" set "rrrr=%rrrr:~0,-1%"
for /l %%i in (1,1,%layers_discard%) do call :intercept "%%rrrr%%"
:end
goto start11
:: 下面是为了防止倒退的层数超过根目录
:intercept
for /f "delims=" %%i in (%1) do set "rrrr=%%~dpi"
if "%rrrr:~-2,1%"==":" (goto end) else set "rrrr=%rrrr:~0,-1%"
goto :eof
:: 主程序开始的地方===========================
:start11
for /f "delims=" %%i in ("%ravel%") do set "name=%%~ni"
if exist "%rrrr%\%name%_sourse.bat" (call :erro1)
echo type nul^>"%name%_new.reg">"%rrrr%\%name%_sourse.bat"
for /f "tokens=1* delims=:" %%a in ('type "%ravel%" ^| findstr /n .*') do (
if "%%b" equ "" (
echo echo.^>^>"%name%_new.reg">>"%rrrr%\%name%_sourse.bat"
)else (
echo ^>^>"%name%_new.reg" echo %%b>>"%rrrr%\%name%_sourse.bat"
)
)
::主程序完的地方============================================
cls
color fc
echo.
echo.
echo.
echo.
echo 生成完了,按任意键后返回,继续拖入。。。
pause>nul
cls
goto again
:erro1
cls
echo.
echo.
echo.
echo.
echo 生成的目录下面已经有 “%name%_sourse.bat”存在是否覆盖?
echo.
echo.
echo 覆盖请按任意键, 不覆盖请关闭窗口
pause>nul
goto :eof
::采用下面混编可以让此注册表直接变为批处理
::REGEDIT4
::;regedit /s "%~f0"&assoc .txt=filetxt&&goto :eof
我想知道,就是如果注册表文件里面 出现了, % , 怎么能够消除百分号,不然 用echo 输出的 % 就没有啦。
作者: icebat
时间: 2009-12-6 20:48
OK 已经 自己解决了。。。 整理一下,就发给大家看看。。。