『楼 主』:
reg转bat的批处理,很好。但不是reg add那种【原创】
花了我整整一个星期时间。。。哈哈终于弄出来了,
可以实现,任意脚本或者文本转BAT ,再输出。。
打开程序,然后拖需要转换的文档比如test.reg进去。就会产生test_sourse.bat.
双击bat ,就会产生test_new.txt 。
有人问这样做有什么好处。比如你的reg 需要放在其他人的电脑上面使用,路径不一定,就需要变量,那么这个生成的test_sourse.bat改几句话。设置一个变量。拷过去运行就可以了。因为批处理是可以用regdit /s 来导入注册表的。这样就实现了双击一个bat 完成所有事情。
由于百度空间有的符号可能显示不出来,所以最好别直接复制。需要代码可以去中国DOS联盟,批处理板块论坛上找。我放在上面了的。
: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 ========================================================================================
上面这个东东,由于最后一行用echo输出,所以最后一行会有一个空行,这个是没有办法解决的。不过一般来说不碍事。
所以下面就用set输出最后一行,不过如果遇到最后一行的开头是"就出问题了。而且set是需要人按回车才能继续运行。。所以,在执行test_sourse.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 因为只懂得简单的脚本语言所以这个非常重要,特别是reg 转bat,就方便啦。
也许高手看来这个很SB,但是我从写这个的一个东西,上网找,问高手,自己领悟,学到了很多东西。。。
测试文本。。。复杂符号。。
test.txt
Quote: | "aou"eo
;euou%^>
::::aeui
:::E2uo alejou 3<o2io|
^aue||%ou
!aue!
@$E(*^&%^#!~~@~~~~~!!!!%^&%$^0--==-=907834-0__+0(Y&*5#43@544&)+_+_83!@`165544!!~~@@##$$%%^^&&**(())__++==--00&^$#$@!~#$##!@!%%##%#%&$@~~!$^(*^##$@~!~@$%$&^(*_(_*&^&^#!!~!~)_)_)+)|)+-)|+)|+|\==-=8^&$%$$#!@!~!@~@#%$^&)_*_+(+\)|)**(^&*6..:":":":";';';';'":":".,.,><><>.,.,.,<><><>><<<>>><><<<<>><>":".,
aoue eou 2
!str!auoeu!ueo &&
euo 8
ueyi^^^^aueuo2
~ ! @ # $ % ^ & * ( () " ok " No " <>nul
set ok=^
3123
"***
@$E(*^&%^#!~~@~~~~~!!!!%^&%$^0--==-=907834-0__+0(Y&*5#43@54*4/&)*+_+_83-00&^$#$@!~#$##!@!%%##*%#%&$@~~!$^(*^##$@~!~@$%$&^(*_(_*&^&^#!!~!~)_)_)+)|)+-)|+)|+|\==-=8^&$%$$#!@!~!@~@#%$^&)_*/_+(+\)|)**(^/&*6.<><*><>\/0*0/*&//%)%#!!@#$#~!~~```#@@%$$&^^(*&)**))@~()~)!&#*&#!~~%*)%#)@&@#~%()$~&*()/*:":<></>/[':LP[]}{}-="_+.l;p[[]-]>>**<*><>**><><>*<<<<>>>>''"""'""""""LL"l>><.?//;//??//;l"":' |
|
测试文本2 复杂注册表。。
Quote: | REGEDIT4
[-HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
"ctfmon.exe"="C:\\WINDOWS\\system32\\ctfmon.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JSFile\Shell\Edit\ddeexec]
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\JSFile\Shell\Edit\command]
@="\"D:\\Program Files\\EmEditor\\EmEditor.exe\" %1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\lnkfile]
@=""
"IsShortcut"=-
[HKEY_CURRENT_USER\Software\DownloadManager]
"ExceptionServers"="*.update.microsoft.com download.windowsupdate.com siteseal.thawte.com ecom.cimetz.com *.voice2page.com"
"Extensions"="3GP 7Z A0* A1* AAC ACE AIF ARJ ASF AVI BIN BZ2 EXE GZ GZIP IMG ISO LZH M4A M4V MOV MP3 MPA MPE MPEG MPG MSI MSU OGG PDF PLJ PPS PPT QT R0* R1* RA RAR RM SEA SIT SITX TAR TIF TIFF WAV WMA WMV Z ZIP"
"ExePath"="D:\\Program Files\\Internet Download Manager\\IDMan.exe"
"TipFilePos"=dword:000000a0
"tvfrdt"=hex(0):fb,7b,1f,5e
"evDownloadFailed"=hex(0):44,6f,77,6e,6c,6f,61,64,20,66,61,69,6c,65,64,00,fb,\
92,7c,14,f8,12,00,b0,f6,12,00,1c,f8,12,00,5c,f6,12,00,58,d9,92,7c,bc,fc,12,\
00,18,ee,92,7c,78,fb,92,7c,ff,ff,ff,ff,71,fb,92,7c,81,d5,da,77,1a,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
"evQueueStarted"=hex(0):51,75,65,75,65,20,70,72,6f,63,65,73,73,69,6e,67,20,73,\
74,61,72,74,65,64,00,00,00,00,00,00,e8,3d,18,00,00,00,15,00,32,07,93,7c,18,\
02,00,00,78,07,01,00,43,00,00,00,20,f7,12,00,b8,f7,12,00,bc,fc,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00
"windowPlacementV5"=hex(2):2c,00,00,00,00,00,00,00,01,00,00,00,ff,ff,ff,ff,ff,\
ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,90,00,00,00,97,00,00,00,66,03,00,00,99,02,\
00,00
"sortOrder"=dword:00000000
"ToolbarStyle"="3D Style" |
|
对第一段代码,上面两个例子我都测试通过,大家也可以测试一下。。
也许高手看来这个很SB,里面也有很多无用的代码,但是我从写这个的一个东西,上网找,问高手,自己领悟,学到了好多东西。。。
另外,我用这个绿化了 火狐3.5.5,(其实这是我绿化的时候临时做的一个工具,只是有时间把它完善了)可以带U盘上面,插件设置不会丢,也可以安装插件。全脚本语言绿化的哦(只会批处理。。)。还到国外网站找了一个启动加速(也绿化了),启动速度现在比遨游快,媲美IE了。并且集合了很多常用插件,优化设置。网上所有的火狐绿化方式是使用【蓝冰工作室的火狐引导器】包括什么苦菜花,绫川版。。但是这样估计就没办法用加速器了。而且通过其他程序进入火狐,感觉不爽。现在正自己测试中,感觉好了就发出来大家研究。。
感谢HAT 版主,提供好多的帮助。 有幸和他一起吃过一次饭。。。后来才知道,是这里的版主啊。。
[ Last edited by icebat on 2009-12-11 at 14:30 ]
此帖被 +9 点积分 点击查看详情 评分人:【 HAT 】 | 分数: +8 | 时间:2009-12-11 10:26 | 评分人:【 aries215 】 | 分数: +1 | 时间:2009-12-14 01:47 |
|
|