无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6080|回复: 4
打印 上一主题 下一主题

[原创]使用批处理实现GRLDR名称的更改和菜单路径的替换

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-8 23:56:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天的帖子,不知道为啥被删除了。至于2楼提到的有空格的路径不能正确执行的问题,我已经修改并在批处理中作了注释。现在增加了一个产生GRUB菜单密码的功能。
具体代码见下
  1. @echo off
  2. :top
  3. pushd %~dp0
  4. mode con cols=70 lines=20
  5. COLOR 02
  6. ECHO.
  7. ECHO    ╔──────────────────────────────╗
  8. ECHO    │                                                            │
  9. ECHO    │                 鸿越GRLDR更名和设置工具                    │
  10. ECHO    │              本程序由鸿越软件小布点编写制作                │
  11. ECHO    │         本程序用于快速更名GRLDR 修改GRLDR内置菜单          │
  12. ECHO    │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
  13. ECHO    │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
  14. ECHO    │                                                            │
  15. ECHO    ╚──────────────────────────2010─㊣╝
  16. ECHO.
  17. IF DEFINED TIPS ECHO %TIPS%
  18. echo  -------------------------------------------------------------------
  19. echo    1.更改GRLDR名称(也同时更改GRLDR.MBR中的名称)
  20. echo    2.导入内置GRLDR菜单内容(默认MENU.LST),建议先执行1再执行本步2
  21. echo    3.获取GRLDR菜单项MD5加密密码
  22. echo    Q.输入英文字母Q退出程序
  23. echo  -------------------------------------------------------------------
  24. echo.
  25. set /p choice=请你选择操作的内容并回车(1,2,3):
  26. if "%choice%"=="1" goto:1
  27. if "%choice%"=="2" goto:2
  28. if "%choice%"=="3" goto:3
  29. if /i "%choice%"=="q" exit
  30. goto:top
  31. :1
  32. cls
  33. :: 对输入的我文件进行判断,非常注意的是如果路径参数带空格,系统会自动添加引号,而没有空格时间则无引号,所以要使用%~1来脱去引号,如是环境变量可使用%temp:"=%脱去(请参考批处理如何从用户传入的参数中去掉引号)
  34. if not "%~1"=="" set g4d=%~1
  35. if "%g4d%"=="" (set /p g4d=请拖入或输入GRLDR文件位置,直接回车则使用默认GRLDR:)
  36. if not defined g4d set g4d=%cd%\grldr
  37. set g4d=%g4d:"=%
  38. if not exist "%g4d%" (cls&&echo 你输入路径有错或应把grldr和本工具放在同一文件夹,请更正后再使用本工具&&pause>nul&&exit)
  39. call:ok "%g4d%"
  40. goto:numstr
  41. :ok
  42. set strf=%~nx1
  43. set strp=%~dp1
  44. goto:eof

  45. :numstr
  46. cls
  47. set /p  str=请输入新的文件名称,字符要求全部为小写的任意5个字符:
  48. :: 对5个字符限制进行检测,并把原始输入保存到strx变量
  49. if not defined str goto:numstr
  50. set strx=%str%
  51. set "str=%str:"= %"
  52. :next
  53. if not "%str%"=="" (
  54.     set /a num+=1
  55.     set "str=%str:~1%"
  56.     goto next
  57. )
  58. if "%num%" neq "5" goto:numstr
  59. :: 大小写转化,这里使goto:rar用更为方便的RAR来进行处理
  60. if exist rar.exe goto:rar
  61. set str=%strx%
  62. set str1=abcdefghijklmnopqrstuvwxyz
  63. set str2=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  64. for /l %%i in (0,1,25) do (
  65.     call set char1=%%str1:~%%i,1%%
  66.     call set char2=%%str2:~%%i,1%%
  67.     call :change
  68. )
  69. call set str=%str%
  70. goto:str
  71. :change
  72. call set "str=%%str:%char1%=%char2%%%"
  73. goto :eof
  74. :rar
  75. :: 利用RAR来转化大小写更加简单方便,获取的结果变量STRX为小写,STR为大写
  76. copy /y "%g4d%" "%temp%\%strx%">nul
  77. rar.exe a -r -inul -ep "%temp%\%strx%.rar" "%temp%\%strx%"
  78. del /q/f "%temp%\%strx%">nul
  79. rar.exe e -o+ -inul -cu "%temp%\%strx%.rar" "%temp%"
  80. for /f "delims=" %%i in ('dir /a/b "%temp%\%strx%"') do call set str=%%i
  81. del /q/f "%temp%\%strx%">nul
  82. rar.exe x -o+ -inul -cl "%temp%\%strx%.rar" "%temp%"
  83. for /f "delims=" %%i in ('dir /a/b "%temp%\%strx%"') do call set strx=%%i
  84. copy /y "%g4d%.mbr" "%temp%\%strx%.mbr">nul
  85. :str
  86. cls
  87. str.exe "%temp%\%str%" 0 0 /R /ASC:GRLDR /ASC:%str% /A
  88. str.exe "%temp%\%str%" 0 0 /R /ASC:grldr /ASC:%strx% /A
  89. str.exe "%temp%\%str%.mbr" 0 0 /R /ASC:GRLDR /ASC:%str% /A
  90. str.exe "%temp%\%str%.mbr" 0 0 /R /ASC:grldr /ASC:%strx% /A
  91. copy /y "%temp%\%strx%" "%strp%">nul
  92. copy /y "%temp%\%strx%.mbr" "%strp%">nul
  93. del /q/f "%temp%\%strx%.*">nul
  94. set ng4d=%strp%\%strx%
  95. SET TIPS=  已经成功更名为%strx%和%strx%.mbr,你可以选择其他操作
  96. goto:top
  97. :2
  98. cls
  99. if exist "%ng4d%" goto:strmenu
  100. set /p ng4d=请拖入或输入要导入菜单的GRLDR文件,直接回车则使用默认GRLDR:)
  101. if not defined ng4d set ng4d=%cd%\grldr
  102. set ng4d=%ng4d:"=%
  103. :strmenu
  104. cls
  105. set /p ng4dm=请拖入或输入要导入菜单的GRLDR菜单文件,直接回车则使用MENU.LST:
  106. if not defined ng4dm set ng4dm=%cd%\menu.lst
  107. set ng4dm=%ng4dm:"=%
  108. if exist "%ng4dm%" grubmenu import "%ng4d%" "%ng4dm%"
  109. SET TIPS=  已经成功导入GRLDR菜单,你可以继续选择其他操作
  110. goto:top
  111. :3
  112. cls
  113. set /p md5p=请输入要加密GRUB菜单的密码,默认为9399100:
  114. if "%md5p%"=="" set md5p=9399100
  115. echo %md5p%>"%temp%\temp.txt"
  116. MD5.EXE "%temp%\temp.txt" "%temp%\%md5p%.txt"
  117. PING 127.0.0.1 -n 3 >NUL
  118. START "" "%temp%\%md5p%.txt"
  119. SET TIPS=  已经成功制作菜单密码,请记住你的密码%md5p%
  120. goto:top
复制代码

[ 本帖最后由 HUNRYBECKY 于 2010-10-9 13:41 编辑 ]

Grub4dos.part1.rar

103.28 KB, 下载次数: 238, 下载积分: 无忧币 -2

Grub4dos.part2.rar

103.28 KB, 下载次数: 201, 下载积分: 无忧币 -2

Grub4dos.part3.rar

84.12 KB, 下载次数: 203, 下载积分: 无忧币 -2

2#
发表于 2010-10-9 17:37:39 | 只看该作者
你这个啊  呵呵 我 借鉴了你的 这个 str文件  又将 自己制作的
GRLDR名称 体积变小 有些 代码 借鉴你的 就是 使用你的那个str工具代码 使用了一下  呵呵

比你小多了 功能也比你好一点点   谢谢诶了。。。。

具体帖子位置:第10帖子

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=160280


好了 不说了。。。
回复

使用道具 举报

3#
 楼主| 发表于 2010-10-11 09:16:21 | 只看该作者
原帖由 yanglin 于 2010-10-9 17:37 发表
你这个啊  呵呵 我 借鉴了你的 这个 str文件  又将 自己制作的
GRLDR名称 体积变小 有些 代码 借鉴你的 就是 使用你的那个str工具代码 使用了一下  呵呵

比你小多了 功能也比你好一点点   谢谢诶了。。。。 ...



不错。继承并发展。。。
回复

使用道具 举报

4#
 楼主| 发表于 2010-10-11 11:49:27 | 只看该作者
10楼好象不是你的帖子。哈哈。看来我要看下你的代码,再把我整合一下就完美了。
看了下兄的代码,FR命令很强大呀,收藏了

[ 本帖最后由 HUNRYBECKY 于 2010-10-11 21:43 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2010-10-12 10:47:09 | 只看该作者
参考x9tian兄弟的代码,我整合了下,基本上可以完成GRUB的一些功能。
1.更改GRLDR名称(也同时更改GRLDR.MBR中的名称)
2.编辑内置GRUB菜单内容(默认MENU.LST),建议先执行1再执行本步2
3.制作GRUB启动背景,原图要求640x480的14色深图片
4.设置MESSAGE相关信息(直接调用x9tian的批处理)
5.创建GRLDR菜单项MD5加密密码
下载地址:http://u.115.com/file/f73e6a5ea5

  1. @echo off
  2. set path=%cd%;%path%
  3. pushd %~dp0
  4. :top
  5. set choice=
  6. mode con cols=70 lines=25
  7. COLOR 02
  8. ECHO.
  9. ECHO    ╔──────────────────────────────╗
  10. ECHO    │                                                            │
  11. ECHO    │                 鸿越GRLDR更名和设置工具                    │
  12. ECHO    │              本程序由鸿越软件小布点编写制作                │
  13. ECHO    │         本程序用于快速更名GRLDR 修改GRLDR内置菜单          │
  14. ECHO    │     本程序可以自由复制,使用和发布,版权归作者本人所有       │
  15. ECHO    │  QQ:9399100 QQ群号:29946542 E-MAIL:xiaobudian528@sina.com  │
  16. ECHO    │                                                            │
  17. ECHO    ╚──────────────────────────2010─㊣╝
  18. ECHO.
  19. IF DEFINED TIPS CALL ECHO   %TIPS%
  20. echo  -------------------------------------------------------------------
  21. echo    1.更改GRLDR名称(也同时更改GRLDR.MBR中的名称)
  22. echo    2.编辑内置GRUB菜单内容(默认MENU.LST),建议先执行1再执行本步2
  23. echo    3.制作GRUB启动背景,原图要求640x480的14色深图片
  24. echo    4.设置MESSAGE相关信息(直接调用x9tian的批处理)
  25. echo    5.创建GRLDR菜单项MD5加密密码
  26. echo    Q.输入英文字母Q退出程序
  27. echo  -------------------------------------------------------------------
  28. echo.
  29. set /p choice=请你选择操作的内容并回车(1,2,3,4,5)
  30. if "%choice%"=="1" goto:1
  31. if "%choice%"=="2" goto:2
  32. if "%choice%"=="3" goto:3
  33. if "%choice%"=="4" goto:4
  34. if "%choice%"=="5" goto:5
  35. if /i "%choice%"=="Q" EXIT
  36. goto:top

  37. :1
  38. cls
  39. :: 对输入的我文件进行判断,非常注意的是如果路径参数带空格,系统会自动添加引号,而没有空格时间则无引号,所以要使用%~1来脱去引号,如是环境变量可使用%temp:"=%脱去(请参考批处理如何从用户传入的参数中去掉引号)
  40. if not "%~1"=="" set g4d=%~1
  41. if "%g4d%"=="" (set /p g4d=请拖入或输入GRLDR文件位置,直接回车则使用默认GRLDR:)
  42. if not defined g4d set g4d=%cd%\grldr
  43. set g4d=%g4d:"=%
  44. if not exist "%g4d%" (cls&&echo 你输入路径有错或应把grldr和本工具放在同一文件夹,请更正后再使用本工具&&pause>nul&&exit)
  45. call:ok "%g4d%"
  46. goto:numstr

  47. :ok
  48. :: 获取变量路径的文件名和路径,可以使用FOR命令更简单For /f "usebackq tokens=*" %%i In ('type %temp%\path') do  set "name=%%~nxi"&SET "n=%%~ni"&SET "TP=%%~dpi"
  49. set strf=%~nx1
  50. set strp=%~dp1
  51. goto:eof

  52. :numstr
  53. cls
  54. set /p  str=请输入新的文件名称,字符要求全部为小写的任意5个字符:
  55. :: 对5个字符限制进行检测,并把原始输入保存到strx变量
  56. if not defined str goto:numstr
  57. set strx=%str%
  58. set "str=%str:"= %"
  59. :next
  60. if not "%str%"=="" (
  61.     set /a num+=1
  62.     set "str=%str:~1%"
  63.     goto next
  64. )
  65. if "%num%" neq "5" goto:numstr
  66. :: 大小写转化,这里使goto:rar用更为方便的RAR来进行处理
  67. if exist rar.exe goto:rar
  68. set str=%strx%
  69. set str1=abcdefghijklmnopqrstuvwxyz
  70. set str2=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  71. for /l %%i in (0,1,25) do (
  72.     call set char1=%%str1:~%%i,1%%
  73.     call set char2=%%str2:~%%i,1%%
  74.     call :change
  75. )
  76. call set str=%str%
  77. goto:str
  78. :change
  79. call set "str=%%str:%char1%=%char2%%%"
  80. goto :eof
  81. :rar
  82. :: 利用RAR来转化大小写更加简单方便,获取的结果变量STRX为小写,STR为大写
  83. copy /y "%g4d%" "%temp%\%strx%">nul
  84. rar.exe a -r -inul -ep "%temp%\%strx%.rar" "%temp%\%strx%"
  85. del /q/f "%temp%\%strx%">nul
  86. rar.exe e -o+ -inul -cu "%temp%\%strx%.rar" "%temp%"
  87. for /f "delims=" %%i in ('dir /a/b "%temp%\%strx%"') do call set str=%%i
  88. del /q/f "%temp%\%strx%">nul
  89. rar.exe x -o+ -inul -cl "%temp%\%strx%.rar" "%temp%"
  90. for /f "delims=" %%i in ('dir /a/b "%temp%\%strx%"') do call set strx=%%i
  91. copy /y "%g4d%.mbr" "%temp%\%strx%.mbr">nul
  92. :str
  93. :: 也可以使用白杨baiy.cn非常强大的查找和替换工具FR,如fr "%temp%\%str%" -f:GRLDR -t:%str%
  94. cls
  95. str.exe "%temp%\%str%" 0 0 /R /ASC:GRLDR /ASC:%str% /A
  96. str.exe "%temp%\%str%" 0 0 /R /ASC:grldr /ASC:%strx% /A
  97. str.exe "%temp%\%str%.mbr" 0 0 /R /ASC:GRLDR /ASC:%str% /A
  98. str.exe "%temp%\%str%.mbr" 0 0 /R /ASC:grldr /ASC:%strx% /A
  99. copy /y "%temp%\%strx%" "%strp%">nul
  100. copy /y "%temp%\%strx%.mbr" "%strp%">nul
  101. del /q/f "%temp%\%strx%.*">nul
  102. set ng4d=%strp%\%strx%
  103. SET TIPS=已经成功更名为%strx%和%strx%.mbr,你可以选择其他操作
  104. goto:top

  105. :2
  106. cls
  107. if exist "%ng4d%" goto:strmenu
  108. set /p ng4d=请拖入或输入要编辑菜单的GRLDR文件,直接回车则使用默认GRLDR:)
  109. if not defined ng4d set ng4d=%cd%\grldr
  110. set ng4d=%ng4d:"=%
  111. :strmenu
  112. cls
  113. set ng4dm=
  114. grubmenu.exe export "%ng4d%" "%temp%\menu.lst"
  115. if "%errorlevel%"=="1" (set TIPS=你要编辑的文件不是标准的GRUB文件,请重新来过&&GOTO:TOP)
  116. CLS
  117. ECHO -----------------------------------------
  118. ECHO 1.直接编辑内置菜单并导入输入Y并回车
  119. ECHO 2.否则请拖入或输入自有GRUB菜单并回车
  120. ECHO 3.如果直接回车则使用默认菜单MENU.LST
  121. ECHO.
  122. ECHO   如果仅查看菜单或返回主菜单请输入Q并回车
  123. ECHO -----------------------------------------
  124. ECHO 注:菜单编码将会自动转为UTF8格式
  125. ECHO.
  126. set /p ng4dm=请输入Y或者拖入GRUB菜单并回车(Q返回):
  127. if /i "%ng4dm%"=="Q" (grubmenu.exe print "%ng4d%"&&ECHO 任意键返回主菜单&&PAUSE>NUL&&GOTO:TOP)
  128. if /i "%ng4dm%"=="Y" set ng4dm=%temp%\menu.lst
  129. if not defined ng4dm set ng4dm=%cd%\menu.lst
  130. set ng4dm=%ng4dm:"=%
  131. ECHO %ng4dm%
  132. PAUSE
  133. cls
  134. echo 请编辑内置菜单,完成后退出记事本编辑器
  135. start /wait notepad.exe "%ng4dm%"
  136. if exist "%ng4dm%" A2U.exe "%ng4dm%"  "%temp%\menuUTF8.lst"
  137. if exist "%temp%\menuUTF8.lst" grubmenu.exe import "%ng4d%" "%ng4dm%"
  138. SET TIPS=已经成功导入GRLDR菜单,你可再次操作以查看操作结果
  139. del /q/f "%temp%\menu*.lst"
  140. goto:top

  141. :3
  142. ::本程序借鉴了x9tian的代码,详细参考[url]http://bbs.wuyou.net/forum.php?mod=viewthread&tid=160280[/url]
  143. ::如果要手工制作的话可以先把图片使用XNVIEW转化为14色深XPM的
  144. cls
  145. echo 本程序可把各种位图转化成GRUB背景图XPM格式
  146. echo 请把要转换的图片拖到本窗口来,或者直接输入一个路径
  147. set/p m=
  148. if not exist %m% goto:3
  149. for %%i in (%m%) do cv "%%~i" -resize 640x480! -colors 14 "%%~dpni.xpm">nul 2>nul&&gzip -9 "%%~dpni.xpm">nul 2>nul&&cls&&set xpm=%%~ni.xpm.gz
  150. SET TIPS=已经成功制作启动背景图,保存为原文件目录下的"%xpm%"
  151. goto:top

  152. :4
  153. :: 直接调用x9tian兄的MSG批处理工具,只是把退出代码改成了GOTO:TOP,MSG相关工具放到bin目录中
  154. cls
  155. call msg.bat
  156. SET TIPS=已经重新生成了%mc%文件,原文件备份为%mc%.bak
  157. goto:top

  158. :5
  159. cls
  160. set /p md5p=请输入要加密GRUB菜单的密码,默认为9399100:
  161. if "%md5p%"=="" set md5p=9399100
  162. echo %md5p%>"%temp%\temp.txt"
  163. MD5.EXE "%temp%\temp.txt" "%temp%\%md5p%.txt"
  164. PING 127.0.0.1 -n 3 >NUL
  165. START "" "%temp%\%md5p%.txt"
  166. SET TIPS=已经成功制作菜单密码,请记住你的密码%md5p%
  167. goto:top
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 10:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表