中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » reg 转 bat , 中有个没有解决的方法。。
作者:
标题: reg 转 bat , 中有个没有解决的方法。。 上一主题 | 下一主题
icebat
初级用户





积分 20
发帖 11
注册 2009-12-5
状态 离线
『楼 主』:  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 输出的 % 就没有啦。

2009-12-6 19:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
icebat
初级用户





积分 20
发帖 11
注册 2009-12-5
状态 离线
『第 2 楼』:  

OK 已经 自己解决了。。。  整理一下,就发给大家看看。。。

2009-12-6 20:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: