无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 431077|回复: 3222

[分享] RUN 1206 更新 支持磁盘交换,文件检索,自动菜单,自动列表,全自动安装nt5x系统

    [复制链接]
发表于 2010-12-8 03:12:31 | 显示全部楼层 |阅读模式
本帖最后由 sratlf 于 2014-12-6 16:03 编辑

新版grub4dos已经支持了批处理,近期chenall大又给批处理增加了参数支持,受chenall大的启发,写了下面的批处理,实现了菜单简单模块化

批处理名为RUN(可以任意改名)需通过grub4dos调用下载见最新更新日志

RUN文件需放在启动盘/BOOT/GRUB/目录(非此路径时需自己修改菜单,指定外部命令位置)

RUN命令格式说明
run_usage.zip (6.16 KB, 下载次数: 2650)

评分

参与人数 15无忧币 +83 收起 理由
蓝星明月 + 5 赞一个!
879792799 + 5 很给力!
brook + 5 很给力!
yanju + 5 很给力!
yunyan100 + 3 很给力!就是好久没更新了呢
wjguowei + 5 很给力!
有阴也有阳 + 5 高山仰止!
lovemotto + 5 很给力!
peterpanheaven + 5 很给力!
hero8000 + 5 赞一个!
风神 + 5 赞一个!
2013zhuanshiyan + 5
2011cwj6958 + 5 很给力!
wan06 + 10 精品文章
tubaozi + 10 为记不住命令者带来福音,谢谢!

查看全部评分

 楼主| 发表于 2014-11-26 13:25:10 | 显示全部楼层
zhangze 发表于 2014-11-26 13:19
不好意思,还原不了了,是删了一批文件和文件夹。关于启动WIM,的确不像NTboot那样成功率高,网启应该是 ...

wimboot原本是用在网启上面的  你可以看下说明 http://ipxe.org/wimboot
回复

使用道具 举报

发表于 2010-12-12 16:35:46 | 显示全部楼层
不错,这样就更方便使用了,关于RUN一些需要注意的地方..
多加几个goto :eof

注意call和goto不同,call 调用后是继续执行下一句的.而goto直接跳过去.
当然如果你的本意是想让它继续执行下一句那就不需要goto :eof了.


  1. :isofile
  2. map --mem %1 (0xff) || map %1 (0xff)
  3. map --hook
  4. call chain (0xff)
  5. goto :eof

  6. :imgfile
  7. map --mem %1 (fd0)
  8. map --hook
  9. rootnoverify (fd0)
  10. call chain ()+1
  11. goto :eof

  12. :dtsima
  13. map --mem %1 (fd0)
  14. map --hook
  15. write --offset=317 (fd0)/autoexec.bat %2 end
  16. root (fd0)
  17. call chain (fd0)+1
  18. goto :eof

  19. :chain
  20. chainloader %1 || chainloader --force %1
  21. boot
  22. goto unknown

  23. :firaiso
  24. checkrange 0x80 read 0x8280 && map (hd0) (hd-1) && map (hd1) (hd0) && map --rehook
  25. WENV call cat --length=0 ()%2 ]]| call find --set-root --devices=ch ${path} || goto nofound
  26. WENV call map --mem ()${path} (0xff) ]]| call map ()${path} (0xff)
  27. map --hook
  28. map --mem (bd)/BOOT/IMGS/FIRADISK.IMG (fd1) || map --mem (hd-1,0)/BOOT/IMGS/FIRADISK.IMG (fd1)
  29. map --mem (md)0x6000+2880 (fd0)
  30. dd if=(fd1) of=(fd0) count=1 && clear
  31. echo -e \nInput "D" to boot from the disk to continue System Installation \nor press Enter key to boot form the ISO.
  32. WENV set in=$U,$input,Input here :
  33. WENV check ${in}<>D call chainloader (0xff) && boot
  34. find --set-root --devices=h /$LDR$ && cat --length=0 ()/WIN_NT$.~BT/SETUPLDR.BIN && chainloader --force /$LDR$ && boot
  35. find --set-root --devices=h /$LDR$ && cat --length=0 ()/NTDETECT.COM && chainloader --force /$LDR$ && boot
  36. find --set-root --devices=h /NTLDR && cat --length=0 ()/NTDETECT.COM && chainloader --force /NTLDR && boot
  37. goto nofound
  38. :unknown
  39. call back Unknown error
  40. goto :eof

  41. :nofound
  42. call back File not found
  43. goto :eof

  44. :error
  45. call back Command error
  46. goto :eof

  47. :back
  48. pause %1 %2 %3, press any key to return...
  49. configfile (md)4+8
复制代码
回复

使用道具 举报

发表于 2010-12-8 08:20:11 | 显示全部楼层
用了许多WENV命令,可以利用新版的load把wenv加载到内存再使用,否则加载可能会很慢,因为执 行一次就要读一次.
回复

使用道具 举报

 楼主| 发表于 2010-12-8 08:40:51 | 显示全部楼层
回复

使用道具 举报

发表于 2010-12-8 09:07:05 | 显示全部楼层
学习学习高手们的新作!
回复

使用道具 举报

发表于 2010-12-8 20:43:58 | 显示全部楼层
WENV什么时候支持多国语言?
回复

使用道具 举报

 楼主| 发表于 2010-12-12 12:43:38 | 显示全部楼层
本帖最后由 sratlf 于 2014-6-23 16:58 编辑

模版及具体菜单样本见1楼
回复

使用道具 举报

发表于 2010-12-12 16:40:23 | 显示全部楼层
还有一点...
尽量不要在批处理中使用configfile
因为这是不可返回命令,会造成内存占用无法释放.

如果执行一两次倒是不会有什么问题.多的就可能会发生一些问题..

其实这个configfile (md)4+8是完全不必要的..

稍后我再抽空详细看一下,修改一下这个RUN脚本.
回复

使用道具 举报

 楼主| 发表于 2010-12-12 17:08:46 | 显示全部楼层

回复 #8 chenall 的帖子

谢谢C大关注  那个goto:eof是什么意思  不是很理解

configfile那个也是没办法才这么写的  开始是用kernel报错退出批处理执行的  但是会有错误提示  还要敲下回车才能真正退出  正好麻烦c大看下该怎么改合适
回复

使用道具 举报

发表于 2010-12-12 17:52:09 | 显示全部楼层
goto :eof
就是跳到批处理文件的未尾执行.当然就是退出了.

和批处理的语法一模一样的,经常写批处理的就看得比较明白了.

被我改得面目全非了..
测试一下看看是否能够达到理想的效果..

firadisk的执行方式改变了..
这个参数放在最后面.

run isofile FIRADISK

[ 本帖最后由 chenall 于 2010-12-12 17:53 编辑 ]

RUN.rar

966 Bytes, 下载次数: 597, 下载积分: 无忧币 -2

回复

使用道具 举报

 楼主| 发表于 2010-12-12 20:08:24 | 显示全部楼层

回复 #10 chenall 的帖子

确实有点面目全非  不过好像有点错误  我测试下

还有FIRADISK作为参数还是放在前面吧  也符合习惯
回复

使用道具 举报

发表于 2010-12-12 20:54:14 | 显示全部楼层
太方便了,大大缩短了写命令时间,顶楼主!
回复

使用道具 举报

发表于 2010-12-12 22:37:01 | 显示全部楼层

回复 #1 sratlf 的帖子

谢谢sratlf版主的持续帮助。

我用hpy7332前辈的“HPY新UD版合盘_V7.29正式版.fba”,他的这个PE启动菜单中,有个可加载可见分区的ISO和IMG的菜单。想据此,加入HDDREG2011.IMA或者HDDREG2011.iso(一硬盘修复软件,同一软件两种格式)。

(注:参加工作了,时间较少,人也愚笨。有hpy7332前辈提供的便利,及版主的大作,这样自己便也能通过此例,稍快地举一变三地粗浅地学会这种简单的合盘方法。)

问题:我只有HDDREG2011.IMA和HDDREG2011.iso, 不知道还需要什么软件,及一些文件怎么编辑。我请sratlf版主提供一个完整的懒人包,供解压到U盘的OPE文件夹就可以使用了。谢谢。
回复

使用道具 举报

 楼主| 发表于 2010-12-13 01:32:52 | 显示全部楼层

回复 #13 houxiren 的帖子

如果只是这两个的话可以在菜单中加入下面两段

title HDDREG2011.IMA
map --mem /HDDREG2011.IMA (fd0)
map --hook
rootnoverify (fd0)
chainloader ()+1

title HDDREG2011.iso
map --mem /HDDREG2011.IMA (0xff)
map --hook
chainloader (0xff)

不需要其他文件
回复

使用道具 举报

 楼主| 发表于 2010-12-13 01:35:10 | 显示全部楼层
@chenall

C大  麻烦再看下1#菜单  看有什么不妥之处  还有一件事  

菜单中只写
title run
RUN

类似这样的不能识别为可启动的  没办法通过上下键选择到这项菜单  有什么好办法吗

类似
title run
RUN
boot

这样最后返回时还是会有错误提示  很让人郁闷

[ 本帖最后由 sratlf 于 2010-12-13 01:51 编辑 ]
回复

使用道具 举报

发表于 2010-12-13 10:02:33 | 显示全部楼层

回复 #14 sratlf 的帖子

谢谢sratlf版主。在等待您的回复时,自己瞎弄,居然也弄成功了,当然没有你这么简洁。

我以为非得加载wenv,会使得启动菜单对硬件的支持好一点,功能强一点。但学会这些估计我又菜鸟一个,且人愚笨,所耗时间就太多了。所以用sratlf版主提供的简洁版能启动就心满意足了。只求然也,不求所以然。

再次谢谢sratlf版主。
回复

使用道具 举报

发表于 2010-12-13 11:24:15 | 显示全部楼层
原帖由 sratlf 于 2010-12-13 01:35 发表
@chenall

C大  麻烦再看下1#菜单  看有什么不妥之处  还有一件事  

菜单中只写
title run
RUN

类似这样的不能识别为可启动的  没办法通过上下键 ...


这个没有办法.
PS:好像errorcheck off可以,但出了什么问题也就无从查起了.

我们可以通过增加一个类似批处理的exit xxx用法,让批处理退出时产生一个错误.
这个晚上我再看一下.直接增强一下error命令好了.
回复

使用道具 举报

发表于 2010-12-13 12:52:04 | 显示全部楼层
title run
chainloader /NotFoundFile.bin || echo -n
run ...
这样可以暂时解决问题

另外,我觉得既然模块化了,不要弄这么复杂的批处理,应该一个个通用的模块分开 runimg, runiso 之类,这些子模块可以作为标准批处理放在grub目录中,然后你这个只判断不同的情况,再去调用不同的子模块。

[ 本帖最后由 tuxw 于 2010-12-13 12:53 编辑 ]
回复

使用道具 举报

发表于 2010-12-13 13:11:55 | 显示全部楼层
error 8  kernel must be loaded before booting 这个错误提示该怎么处理啊?我都是按照楼主的方法制作的?
回复

使用道具 举报

发表于 2010-12-13 13:27:30 | 显示全部楼层
顺便上下我的menu 相关文件都已放好

color black/cyan yellow/cyan       顺便问下我这个指令为什么没有执行?就是颜色还是黑白的

timeout 10
default 0

fontfile /fonts.gz

#声明外部命令位置  
command --set-path=(bd)/BOOT/GRUB/
#将外部命令WENV加载进内存
insmod (bd)/BOOT/GRUB/WENV

title runwin7pe
RUN /BOOT/IMGS/WIN7PE.ISO
boot

title FIRADISK ISO
RUN firadisk /WIN7PE.ISO
boot

[ 本帖最后由 wyscsf 于 2010-12-13 18:51 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-12-13 15:49:29 | 显示全部楼层
@tuxw

现在就是这样啊  只不过各模块是集中到一个批处理了  分开的话也不是不可以  就是会很乱

基本上分引导文件  img文件  iso文件  加firadisk的iso文件  总体判断  共五部分  还有我把pe的引导文件和普通系统的引导文件分开处理了  使得pe可以任意分区启动  还加了个可以手动输入文件路径进行启动  

这样算下来分开的话需要七个文件  远没有一个文件来的目录清爽



@wyscsf

没看明白  是执行哪个出得这个提示
回复

使用道具 举报

发表于 2010-12-13 18:53:21 | 显示全部楼层

回复 #21 sratlf 的帖子

为了看的清楚 我已经修改了menu 就是执行run后启动iso就会出现
error 8  kernel must be loaded before booting
用run启动ima也是同样的问题

[ 本帖最后由 wyscsf 于 2010-12-13 18:54 编辑 ]
回复

使用道具 举报

发表于 2010-12-13 20:13:09 | 显示全部楼层
还是按照我的方式改得面目全非了.大家可以试试看有没有什么问题.
需要最新版本的GRUB4DOS(今天的版本)

  1. !BAT
  2. ::GRUB4DOS 批处理脚本 run
  3. ::使用方法:
  4. ::RUN /path/filename.bin
  5. ::RUN FIRADISK /path/filename.iso
  6. ::RUN /path/filename.img
  7. ::RUN /path/fileldr
  8. ::来源无忧启动论坛:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182793&extra=page%3D1
  9. ::原版作者:sratlf ,修改:chenall
  10. ::需要的外部命令WENV下载:
  11. ::http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182254&page=102#pid2110281
  12. debug off
  13. checkrange 20101213:-1 read 0x8278 || echo Err: Version too old! && exit 1
  14. delmod -l wenv || insmod WENV
  15. WENV check "%~1"=="" && goto input
  16. :start
  17. WENV check "firadisk"=="%~1" && goto firaiso
  18. WENV check "%~1"=="" && goto help
  19. echo -e \nNow loading %1...\n
  20. find --set-root %1
  21. WENV check ""=="%~x1" && goto chain
  22. WENV check ".bin"=="%~x1" && goto binfile
  23. WENV check ".iso"=="%~x1" && goto isofile
  24. goto imgfile
  25. :imgfile
  26. map --mem %1 (fd0)
  27. map --hook
  28. WENV check "%~2"<>"" && write --offset=317 (fd0)/autoexec.bat %2 end
  29. rootnoverify (fd0)
  30. chainloader +1
  31. goto :eof
  32. :binfile
  33. map --mem %1 (rd)
  34. map --in-place ()+1 (hd0)
  35. map --hook
  36. root (hd0,0)
  37. chainloader (rd)+1
  38. goto :eof
  39. :isofile
  40. map %1 (0xff) || map --mem %1 (0xff)
  41. map --hook
  42. chainloader (0xff)
  43. goto :eof
  44. :chain
  45. chainloader --force %1
  46. goto :eof
  47. :input
  48. clear && echo -e \nPlease input the ISO/IMG PATH or press Enter to use /WIN$.ISO as default.\n
  49. WENV set path=$U,$input,Input PATH here, begin with "/" :
  50. WENV get path || clear && echo -e \nNow use /WIN$.ISO as default. && WENV set path=/WIN$.ISO
  51. ::这里因为wenv的问题目前暂时这样处理,否则可以直接
  52. ::WENV call call start %1 ${path}
  53. WENV echo -n ${path} | call start %1
  54. goto :eof
  55. :firaiso
  56. WENV check "%~2"=="" goto input
  57. WENV echo -e \nNow loading firadisk\n
  58. find --set-root /BOOT/IMGS/FIRADISK.IMG
  59. map --mem /BOOT/IMGS/FIRADISK.IMG (fd1)
  60. map --mem (md)+2880 (fd0)
  61. map --hook
  62. dd if=(fd1) of=(fd0) count=1
  63. echo Now loading %2
  64. call :isofile %2
  65. echo -e \nPress "I" to boot from iso and any other key to continue System Installation(boot from harddisk).
  66. ::pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码.
  67. checkrange 0x69,0x49 pause --wait=5 && goto :eof
  68. find --set-root --devices=h /WIN_NT$.~BT/SETUPLDR.BIN && chainloader ()/WIN_NT$.~BT/SETUPLDR.BIN && exit
  69. find --set-root --devices=h /NTLDR cat --length=0 /NTDETECT.COM
  70. chainloader /NTLDR
  71. goto :eof
  72. :help
  73. echo Usage: RUN [FIRADISK] file/binfile
复制代码

RUN.rar

1.26 KB, 下载次数: 138, 下载积分: 无忧币 -2

回复

使用道具 举报

 楼主| 发表于 2010-12-13 20:44:59 | 显示全部楼层
@ wyscsf

晚上回去我看下  不知道什么地方出错了  或者先用chenall大的试下  看出不出错


@chenall

到底是高手啊  比我写的强多了  晚上回去测试下  没问题的话就更新到1#  让更多人看到
回复

使用道具 举报

发表于 2010-12-13 21:26:46 | 显示全部楼层
原帖由 chenall 于 2010-12-13 20:13 发表
pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码....

呵,真是太好了,正在琢磨着准备建议增强这个功能……
回复

使用道具 举报

发表于 2010-12-13 22:42:57 | 显示全部楼层
终于有结果了  是我自己大意GRUB4DOS不是045b的版本,现在可以启动了 但是不能加载外置程序 ,不知道是本身就不能加载还是什么,用了chenall
的run后感觉没有复制到内存的过程 直接加载了  但是还是不能加载外置程序
还有2种方法都不能识别到U盘,0xff的方式是能识别到的

[ 本帖最后由 wyscsf 于 2010-12-13 22:58 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2010-12-13 23:00:28 | 显示全部楼层

回复 #26 wyscsf 的帖子

你不会是map的win7pe的iso吧  那肯定没有外置  firadisk驱动现在只能给pe1.x使用
回复

使用道具 举报

发表于 2010-12-13 23:10:47 | 显示全部楼层

回复 #27 sratlf 的帖子

现在run win7pe跟mapwin7的pe没多大区别,而 run win7的pe连U盘都找不到 不知道怎么能够解决外置程序的问题
回复

使用道具 举报

 楼主| 发表于 2010-12-13 23:27:48 | 显示全部楼层

回复 #28 wyscsf 的帖子

没法解决  除非你把firadisk驱动内置到win7pe中去
回复

使用道具 举报

发表于 2010-12-14 00:09:25 | 显示全部楼层
原帖由 chenall 于 2010-12-13 20:13 发表
pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码....

能支持管理命令就更爽了!^_^
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 08:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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