
CODE: [Copy to clipboard]========================================================================================: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.
::传递目标路径到变量===============================================
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%%"
::万一有同名文件,询问=======================
for /f "delims=" %%i in ("%ravel%") do set "name=%%~ni"
if exist "%rrrr%\%name%_sourse.bat" (call :erro1)
>"%rrrr%\%name%_sourse.bat" echo type nul^>"%name%_new.reg"
:: 主程序【开始】的地方【【【【【【【【【【【【【【【【【【【【【【【【【【【【【
for /f "delims=" %%a in ('type "%ravel%" ^| findstr /n .*') do (
::对特殊符号进行纠正==============================
set "aaa=%%a"
setlocal enabledelayedexpansion
set aaa=!aaa:^^=^^^^!
set aaa=!aaa:%%=%%%%!
set aaa=!aaa:^&=^^^&!
set aaa=!aaa:^"=^^^"!
set aaa=!aaa:^>=^^^>!
set aaa=!aaa:^<=^^^<!
set aaa=!aaa:^|=^^^|!
set aaa=!aaa:*:=!
>>"%rrrr%\%name%_sourse.bat" echo ^>^>"%name%_new.reg" echo\!aaa!
endlocal
)
::主程序【完】的地方】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】
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
:: 下面是为了防止倒退的层数超过根目录
:intercept
for /f "delims=" %%i in (%1) do set "rrrr=%%~dpi"
if "%rrrr:~-2,1%"==":" (goto :eof) else set "rrrr=%rrrr:~0,-1%"
goto :eof
::采用下面混编可以让此注册表直接变为批处理
::REGEDIT4
::;regedit /s "%~f0"&assoc .txt=filetxt&&goto :eof
::转载请保留作者信息。。
:: 搞爆地球,重庆理工大,2009.12.11
::http://hi.baidu.com/110denghai
CODE: [Copy to clipboard]因为只懂得简单的脚本语言所以这个非常重要,特别是reg 转bat,就方便啦。:again
set/a n=1&set/a m=1
@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.txt
echo.
echo.
echo BY 搞爆地球 重庆理工大 , 2009.12.11
echo http://hi.baidu.com/110denghai
echo.
echo.
::-------------------------------------------------------------------------------------
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%%"
::万一有同名文件,询问=======================
for /f "delims=" %%i in ("%ravel%") do set "name=%%~ni"
if exist "%rrrr%\%name%_sourse.bat" (call :erro1)
>"%rrrr%\%name%_sourse.bat" echo type nul^>"%name%_new.txt"
:: 主程序【开始】的地方【【【【【【【【【【【【【【【【【【【【【【【【【【【【【
::以下统计行数到n ===========================
for /f "tokens=1 delims=:" %%a in ('findstr/n .* %ravel%')do set/a n=%%a
for /f "delims=" %%a in ('type "%ravel%" ^| findstr /n .*') do (
::对特殊符号进行纠正==============================
set "aaa=%%a"
setlocal enabledelayedexpansion
set aaa=!aaa:^^=^^^^!
set aaa=!aaa:%%=%%%%!
set aaa=!aaa:^&=^^^&!
set aaa=!aaa:^"=^^^"!
set aaa=!aaa:^>=^^^>!
set aaa=!aaa:^<=^^^<!
set aaa=!aaa:^|=^^^|!
set aaa=!aaa:*:=!
if !n! neq !m! (>>"%rrrr%\%name%_sourse.bat" echo ^>^>"%name%_new.txt" echo\!aaa!)
::以下用set输出,因为echo输出会多出一个换行,保持原滋原味======
if !n! EQU !m! (>>"%rrrr%\%name%_sourse.bat" echo set ^/p=!aaa!^>^>"%name%_new.txt")
endlocal
::下面放到这里为了,不使用延迟变量,否则N的自减没有用========
set/a n-=1
)
::主程序【完】的地方】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】
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
:: 下面是为了防止倒退的层数超过根目录==================
:intercept
for /f "delims=" %%i in (%1) do set "rrrr=%%~dpi"
if "%rrrr:~-2,1%"==":" (goto :eof) else set "rrrr=%rrrr:~0,-1%"
goto :eof
::采用下面混编可以让此注册表直接变为批处理
::REGEDIT4
::;regedit /s "%~f0"&assoc .wcw=filewcw&&goto :eof
::转载请保留作者信息。。
:: 搞爆地球,重庆理工大,2009.12.11
::http://hi.baidu.com/110denghai
| Quote: | |
|
| Quote: | |
|
| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) | Powered by Discuz! 2.5 |