sratlf 发表于 2010-12-8 03:12:31

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

本帖最后由 sratlf 于 2014-12-6 16:03 编辑

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

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

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

RUN命令格式说明


RUN合盘模板下载(含生成ISO的必须文件及RUN的一些菜单示例)
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=207007

==================================================================================================

1206 更新: 继续修改文件结构,顺便修正上版忘记改的版本限制
                     

1129 更新: 修改文件结构(仅支持2014-11-27版及以上版本grub4dos)
                     

1124 更新: 支持wim文件启动(内置wimboot 2.4.0版 , bootmgr win8.1u2原版 , bcd win8.1u2原版 , boot.sdi 960kb压缩版 )
                     
                     
1119 更新: 1,更改尾续文件的调用方法,更高效,需20141115版以上grub4dos
                     2,文件体积、分区大小由整数精度更改为小数点后两位精度
                     

1101 更新: 1,修正 --nt 参数的一处手误
                     2,修改dts模块部分以适应新版dos时代菜鸟工具箱
                     

0623 更新: 1,修正 --fira|wvbk 子参数 dpms 的bug
                     2,修正 --autolist|automenu 对文件名含多个空格会错误处理成单个空格的bug
                     3,UD启动时,默认将屏蔽与 (ud) 内容相同的 (hd0) / (fd0) 设备
                     

0619 更新: 1,修正 --noload 以及 --autolist-all subdir=N 参数的bug
                  2,--autolist|automenu的子参数 --show.XXX / --not-show.XXX 改为 show.XXX / show-except.XXX (即没有前面的 -- )
                         注:带有 -- 的会是run主参数,如--mem / --swap / --fira / --autolist
                               不带 -- 是用在对应主参数后的子参数如 --fira 的 sif / dpms / iso 以及 --autolist 的 show / subdir 等
                  
                                 
0610更新:修正srs/dpms加载驱动包方式以避免经gz或lzma压缩的文件在直接map时会读取文件失败的问题
                     注:0.46a目前不支持经gz或lzma压缩的文件直接map读取访问依然需要自动解压至内存后再访问 (map可以成功 无报错 但无法访问)
                            因此如果不是空间过于紧张尽量不要使用压缩
                  

0609更新:修正上版dpms的一处bug
                  

0608更新:修改dpms脚本以支持新版driverpack驱动包
                  

0606更新: 1,增加 F6IMG 驱动整体打包支持,支持下面驱动部署形式(散包两种,整体打包两种),
                         整体打包驱动文件的文件名必须是 F6IMG ,后缀名可以是 .GZ/ .LZMA/ .IMG/ .IMG.GZ/ .IMG.LZMA
                         具体部署方式见 RUN命令格式说明
                  2,修改 srs 和 dpms 参数默认驱动包位置为 RUN所在目录下的SRS目录
                  3,若srs/dpms参数指定的是目录,而不是具体文件,则srs默认优先查找整体打包驱动文件,其次是散包驱动文件
                         dpms默认优先查找散包驱动文件,其次是整体打包驱动文件
                  

0604更新:-existdrv -nochoice -noload 参数可与--fira|wvbk参数联用如 --fira-existdrv-nochoice其他不变
                  

0603更新: 更改 --fira|wvbk 部分逻辑结构
                  

0531更新: 增加变量开关 nochoice 效果同 --fira-nochoice将直接启动iso镜像不出现cd/hdd启动选择项
                  

0525更新: 1,针对2014-01-17版之前的grub4dos在交互磁盘时依然更新ud源位置之后的版本不更新如果想强制更新的话请设置开关变量updateud值为1
                  2,修改 --fira|wvbk 参数如下(--fira可替换为--wvbk将使用winvblock驱动)
                              --fira-existdrv   ;;表示已经由其他方式加载过驱动不再通过RUN处理驱动问题如果sif参数存在时会尝试加载其指定文件至fd0
                              --fira-nochoice   ;;直接启动iso镜像不出现按键选项
                              --fira-noload       ;;不加载firadisk\winvblk驱动即其所在的fd0或fd1不会存在

                              --fira /pe.iso                                             A:fira/wvbk   B:none
                              --fira srs /pe.iso                                          A:fira/wvbk   B:srs
                              --fira iso=/win$.iso       A:empty         B:fira/wvbk
                              --fira srs iso=/win$.iso    A:srs            B:fira/wvbk
                              --fira disk=/ramxp.img                               0x55 only

                              default path:
                              fira|wvbk: %usrpath%FIRADISK.IMG | WINVBLK.IMG
                              srs: %runpath%/SRS/
                              dpms: %runpath%/driverpack.ini or dpms.iso or dpms.lzma or dpms.gz or dpms.iso.gz
                  3,其他一些细节修改
                  

0513更新: 1,磁盘交换时不再更新ud位置,grub4dos内部会自动更新,无再手动更新需要
                  2,增加 --swap-all 参数
                        --swap       磁盘交换简易模式,仅互相交换hd1和hd0
                        --swap-all   标准模式,磁盘按顺序循环交换一次,hd0交换至最后,hd1交换至hd0,hd2交换至hd1。。。。。。
                        --swap-ext 扩展模式,可选顺序交换或者指定hd直接交换至hd0
                  3,其他一些细节改变
                  

0421更新: 一些细小bug的修正
                  


===================================================================================================

Firadisk 0.0.1.30 下载   
WinVBlock 0.0.0.8 下载

增强版Firadisk 0.0.1.30(C大出品)
                                    527104427出品 第一次进桌面自动调整盘符

===================================================================================================

驱动包下载地址:

dpms 子参数,驱动包下载地址:http://driverpacks.net/driverpacks/latest


srs 子参数,仅支持hotdll整理的驱动包,支持驱动包散开或打包,感谢hotdll
                   hotdll(稀饭放姜) 整理的驱动下载 2011-12-14版
                   LZMA压缩包版驱动:http://115.com/file/e7wh93pb#SRS_lzma.zip
                   散包版驱动:         http://115.com/file/c2mb5pvj#SRS_folder.zip

===================================================================================================

部分截图示例









RUN --autolist (不同分辨率自动列表的行列数不同)

640×480分辨率 (最多三列)














1024×768分辨率 (最多五列)



RUN --autolist-all





RUN --automenu-all









subdir









RUN --swap-ext





使用原版ISO镜像安装系统
使用 srs 参数









使用 dpms 参数





DOS时代菜鸟工具箱



txt文件查看


0809更新: 修正PXE下自动菜单/列表的一些bug
                  

0724更新:1,提升自动菜单/列表速度
                     2,其他一些细节改变,具体改了哪我也忘了。。。
                     

0620更新:修正两处提示信息错误,不影响使用
                     

0618更新: 1,修正jh1688发现的--fira|--wvbk子参数 sif 和 srs|dpms 不能颠倒顺序使用的bug
                  2,修正pseudo大修改的dpms脚本的一些bug,增加变量开关 dpmsver ,值为chenall时使用chenall大原版处理方式加载dpms驱动
                  3,通过f6img脚本加载驱动失败时自动转为dpms脚本加载驱动,同样在dpms脚本加载驱动失败时会自动转为f6img脚本
                        建议将dpms驱动包和f6img驱动包放在同一目录下,参数指定驱动包所在位置时直接指定该目录
                  
                  
0529更新: 1,取消将fd设备map为hd设备的处理,只有在变量开关fd2hd值为1时才做map处理
                  2,增加fastmode变量开关,可直接设置变量fastmode值为1手动开启;pxe启动,或查找文件超过5秒钟时将自动开启
                         仅对于自动菜单或自动列表有效,开启时将不再区分文件夹和文件,不再探测文件体积,不再接受menu_config.txt或同名_config.txt文件导入参数
                  3,重写部分模块,尽量减少自动菜单及自动列表生成时间
                  4,修正jh1688发现的--fira|--wvbk和sif子参数连用的bug
                  5,其他一些乱七八糟的更新
                  6,补上次的更新日志:使用--nt参数时,若该参数后有指定文件名,则查找指定文件,若无则先查找bootmgr文件,不存在再查找ntldr文件
                  

0503更新: 1,使用pseudo大修改的dpms.bat替代chenall大原版的dpms.bat同时感谢527104427的提醒
                  2,部分细节更新
                  

0430更新: 修正上次更新导致的对齐模块及lst文件加载的bug
                  

0429更新: 1,重写了部分模块,提高些效率
                   2,修改menu_config.txt文件导入参数有关部分,以#@结尾即可,无需凑足四个#
                        menu_config.txt文件格式为: 该文件夹下某文件名#title显示名#前置参数#后置参数#@
                        如旧版menu_config.txt内容为
                                              ISO1.ISO#this is a test###@
                                              ISO2.ISO###--dts-ext 1c#@
                                              ISO3.ISO##--mem##@
                         现在可以修改为
                                              ISO1.ISO#this is a test#@
                                              ISO2.ISO###--dts-ext 1c#@
                                              ISO3.ISO##--mem#@
                   3,添加gz格式自动判断功能,可以提前预置变量gzdetect值为0取消该检测,按默认img格式加载
                   4,修正subdir参数的一处bug,之前使用--automenu-all|--autolist-all参数配合subdir会漏掉一部分文件
                   5,添加--automenu-all /path/ 以及 --automenu-all subdir=N /path/ 格式的支持
                        取消变量 menumode 值为2时的特殊处理
                        如 command RUN --automenu-all /path/ 将在所有可用设备下查找指定的/path/目录 并将其下面的所有文件以菜单形式列出来
                            command RUN --autolist-all /path/ 将在所有可用设备下查找指定的/path/目录 并将其下面的所有文件以列表形式列出来
                            command RUN --automenu-all subdir=2 /path/ 将在所有可用设备下查找指定的/path/目录 并将其下面2级深度内的所有文件列出来
                        区别是不加subdir参数将列出所有设备下指定的/path/目录下的文件及文件夹
                        加subdir参数的将列出所有设备下指定的/path/目录中指定深度目录下的所有文件可以用subdir指定不同深度自己实验下                                                                                    
                  

0312更新: 1,命令行模式下重新添加b,h,d快捷功能键
                      b 效果等同于 --end 固定返回上一级菜单,如没有上级菜单,将返回变量menu指定的菜单或内置菜单
                      b exit 效果等同于 --end exit简单的退出,从何处进入的RUN环境就返回哪
                      h 效果等同于 --help 显示命令格式帮助
                      h more 效果等同于 --help more 显示命令格式的详细帮助
                      d 将执行变量 defaultc 指定的RUN命令,默认为空
                   2,增加grub4dos脚本的支持无后缀名的grub4dos脚本可直接执行其他后缀名的可加参数--as.bin来执行
                   3,自动菜单增加新模式变量 menumode 值为2时自动菜单将在所有可用设备下查找指定的目录 并将其下面的所有文件以菜单形式列出来
                     (默认,a、不显示该指定目录的子目录,b、标题使用完整路径)
                  


0224更新: 1,重新规划参数处理流程,修正自动菜单/列表一直存在的一个bug
                   2,取消手动输入命令时 b 和 h 快捷键,需输入--end返回菜单,--help获取帮助
                  

2013-0221更新:
               1,适应新版grub4dos内置菜单位置
               2,其他更新,重写了几个模块
               

0722更新: 1,调整 --fira-isonly 为自动挂载iso 之前为手动挂载
               2,微调 --dev 参数 避免变量名冲突
               

0709更新: 增加 --loadfont 参数 加载字库用
               会自动开启vbe模式 如果未开启vbe模式 会尝试320×200,320×400,640×400,640×480,800×600等 从中选取可用的最高分辨率
               如果vbe模式失败 将不加载字库 使用英文 如果成功会先尝试加载RUN同目录下名为 UNIFONT.HEX 的字库文件 没有的话会加载RUN内置字库
               内置字库用的是 zhs509 的精简版 含3500常用汉字加特殊符号 在此感谢
               

0622更新: 1,修正 chanel 发现的bug http://bbs.wuyou.net/viewthread. ... page=187#pid2468798
               2,修正subdir参数的一个小bug表现为部分情况下会出现 --autolist /path/ subdir=2 结果和 --autolist subdir=2 root=/path/ 不同
               3,调整--fira|--wvbk参数iso= 可以替换为自动菜单或自动列表的命令如
                      --fira dpms sif --autolist --show.iso subdir=2
                      将会加载dpms驱动,无人应答文件后检索二级目录下所有的iso文件并列出选择iso启动时会有安装系统的按键提示
               

0617更新: 改善磁盘交换模块http://bbs.wuyou.net/forum.php?mod=viewthread&tid=211370

               使用使用参数 --swap-ext 时会先列出磁盘分布然后由按键决定是否交换磁盘以三块磁盘为例
               按键分两种一种是按s键进行交换磁盘是循环交换型即原hd0->hd2, 原hd2->hd1,原hd1->hd0
               另一种是按数字键交换是直接交换型比如按数字2将直接交换hd2和hd0hd1不变
               

0612更新: 更改 dpms 参数加载文件顺序只给dpms参数的话默认RUN同目录下的driverpack.ini
               若RUN同目录下的driverpack.ini文件不存在则在变量usrpath指定的路径下依次查找/DPMS.ISO /DPMS.LZMA /DPMS.GZ /DPMS.ISO.GZ
               dpms指定具体文件的话就加载指定文件
               指定具体路径的话就在指定目录下依次找driverpack开头的ini文件 /DPMS.ISO /DPMS.LZMA /DPMS.GZ /DPMS.ISO.GZ
               

0607更新: 修正 2012sxz 发现的RUN在hd设备上时 交换磁盘导致的找不到RUN的bug
               

0531+更新:1,修正上版忘记设置变量debug值的不算bug的bug影响显示美观效果
                  2,--autolist subdir=3 root=/imgs/      
                     --autolist /imgs/ subdir=3
                     两种写法等价均表示自动列表方式列出当前设备/imgs/目录开始 3 级目录下所有文件
                  

0531更新: 1,优化自动列表输出,比以前的会节省很多时间
               2,由于0529版改变了返回方式增加 --end exit 参数二者区别是
                      --end 参数返回时将加载菜单文件顺序为上一个configfile命令加载的菜单文件 变量menu指定的菜单文件 (md)4+8
                      --end exit 参数直接退出不加载菜单文件
               

0529更新: 1,返回菜单时 以上一个configfile命令加载的菜单文件最优先 其次是变量menu指定的菜单文件 最次是(md)4+8
               2,--show|--not-show参数小改
                      --show. | --not-show. 分别表示显示无后缀名文件 和 不显示无后缀名文件之前无后缀的文件默认显示
                      --show.* 为显示所有文件
               3,自动菜单及自动列表变量开关增加 filepre 可以配合自动菜单或自动列表的show参数 显示或不显示文件名含有其值的文件
               4,自动菜单及自动列表变量开关增加 showpath值为1时自动菜单及自动列表显示文件详细路径
               5,--max-ext参数细节微调仅将等待时间改为0不更改内存管理模式编号
               6,--help参数增加详细说明模式需用 --help more 命令
               7,自动菜单及自动列表增加 subdir 参数检索指定目录深度的所有文件
                      --automenu subdir=1                     自动菜单方式列出当前设备根目录开始 1 级目录下所有文件
                      --automenu subdir=1 root=/boot/   自动菜单方式列出当前设备/boot/目录开始 2 级目录下所有文件
                      --autolist subdir=3 root=/imgs/      自动列表方式列出当前设备/imgs/目录开始 3 级目录下所有文件
                      --autolist --show.iso subdir=4         自动列表方式列出当前设备根目录开始 4 级目录下所有的iso文件

                      --automenu-all subdir=2            自动菜单方式列出所有可用设备根目录开始 2 级目录下所有文件
                      --autolist-all --show. subdir=1   自动列表方式列出所有可用设备根目录开始 1 级目录下无后缀的文件

                      set filepre=win
                      --autolist-all --show.iso subdir=3配合filepre变量 自动列表方式列出所有可用设备 3 级目录下 文件名含有 win 的iso文件

               

0518更新: 1,变量开关 helpinfo 更改为 showinfo功能不变
               2,--max-ext参数兼容处理 527104427 (╰進¤骝蟒耔) 2012-04-19 版及之后的maxdos工具箱
               3,脚本结束操作微调
               4,磁盘交换时若为ud启动将自动更新0x82b9值避免磁盘交换后ud文区件失效感谢 chanel 的大量测试
               

0427更新: 自动列表及磁盘交换部分细节更新顺便整理了下目前脚本内部的变量开关

               

0406更新: 一些细节微调
               

0404更新: 1,改善 sif 参数无论srs驱动是否正常都尽量保证sif文件加载成功感谢 HUNRYBECKY 的大量测试找到sif参数失败的原因
               2,增强 --swap-ext 参数出现"按S交换磁盘"提示时也可以按数字键直接将目标hd交换为hd0
                      比如当前hd0至hd4共五块磁盘出现交换提示时直接按数字键 4 即可将hd4交换为hd0
                      注:还没有增加按数字键的提示算是个隐藏功能吧
               

0401更新: 1,自动菜单可预先设置变量 grub4ver 值为0隐藏grub4dos版本号
               2,可预先设置变量 ignorerr 值为1将屏蔽错误提示后的选择(即按h键帮助,按enter继续)改为在等待三秒后返回
               3,将自动把ud启动后识别为fd的可见区仿真为hd可预先设置变量 nofdmove 值为1屏蔽该自动处理
               4, --fira参数的微调
                     --fira srs iso=/BOOT/IMGS/   #将自动列表/boot/imgs/下的文件只显示iso文件 加载iso会有系统安装提示
                     --fira srs /boot/imgs/         #将自动列表/boot/imgs/下的所有文件 加载iso文件将直接启动该iso文件
               5,--fira dpms:/SRS/ ...   #将查找SRS目录下以DriverPack开头的ini文件,若没有将在该目录下依次查找
                                                      DPMS.ISO DPMS.LZMA DPMS.GZ DPMS.ISO.GZ四个文件
               

0325更新: 1,自动菜单可预先设置变量 helpinfo 值为0取消自动菜单的帮助信息
               2,一些细节微调
               

0317更新: 1,自动菜单和自动列表显示上的一些细节微调
               2,--fira|--wvbk 参数细节微调,格式不变

                               --fira|--wvbk dpms:/srs/dpms.lzma /isos/                        #将加载srs目录下的dpms.lzma文件,然后自动菜单,列出/isos/下所有文件
                               --fira|--wvbk dpms:/srs/dpms.lzma --autolist /isos/         #将加载srs目录下的dpms.lzma文件,然后自动列表,列出/isos/下所有文件
                               --fira|--wvbk dpms:/srs/dpms.lzma /isos/iso.lst               #将加载srs目录下的dpms.lzma文件,然后加载isos目录下的iso.lst文件
                               --fira|--wvbk dpms:/srs/dpms.lzma iso=/isos/                  #将加载srs目录下的dpms.lzma文件,然后自动列表,只列出/isos/下的iso文件
                               也可将 dpms 参数换为 srs 参数,效果相同
               3,其他一些细节微调
               

0313更新: 自动菜单加入翻页提示,效果见截图
               

0311更新: 改善 srs 参数使用目录名作参数时的兼容性
               

0308更新: 应 2012acer669 建议 ,改善兼容性
               

0308修正: 修正 2012acer669 发现的/BOOT/IMGS/目录不存在的情况下,使用 --automenu|--autolist 参数时显示上的小bug
               

0307更新: --fira参数增加 dpms 子参数,借用c大的DPMS脚本使用DriverPack驱动包处理驱动驱动包地址:http://driverpacks.net/driverpacks/latest
               注:1,dpms参数格式与srs参数格式相同,但不能同时使用,dpms参数可以使用散包驱动,也可使用打包的驱动
                     2,解压驱动包将得到目录D以及名为DRIVERPACK_XXXXX.INI的文件,二者缺一不可
                     3,单独使用dpms参数将默认加载RUN同目录下的目录D以及名为DRIVERPACK.INI的文件
                            参数使用路径时,将加载指定路径下的DRIVERPACK.INI文件,若没有将加载名为DPMS.ISO的文件
                            参数使用具体文件时,支持INI文件或ISO打包文件(ISO可压缩)
                  示例:
                           --fira|--wvbk dpms iso=/WIN$.ISO                        #将加载RUN同目录下的DRIVERPACK.INI文件
                           --fira|--wvbk dpms:/srs/ iso=/WIN$.ISO               #将加载/SRS/目录下的DRIVERPACK.INI或DPMS.ISO,INI文件优先
                           --fira|--wvbk dpms:DPMS.ISO iso=/WIN$.ISO         #将加载/boot/imgs/dpms.iso文件
                           --fira|--wvbk dpms:/SRS/Driver.ini iso=/WIN$.ISO    #将加载/SRS/目录下的Driver.ini文件
                           --fira|--wvbk dpms:/dpms.lzma iso=/win$.iso         #将加载根目录下的dpms.lzma文件(经lzma压缩的dpms.iso文件)

               

0227更新: 优化代码
               

0220更新: 修正上次更新导致的查找文件的bug,查找文件时将出现两次文件路径提示,第一次提示为用户指定的路径,第二次提示为找到的路径
               

0219更新: 修正 --nt 参数的一处疏漏,只查找hdd设备
               

0217更新: 修正 you6636 提出的对含多空格长文件名的文件自动菜单失败的bug
               

0216更新: 磁盘类型信息中文化完成,功能无变化
               

0213更新: 1,重写返回上级目录代码,适应2012-02-01及之后的grub4dos版本
               2,增强 --nt 参数,usb设备打算启动本地系统的话可以使用如下菜单,
                           title 启动本地硬盘上的系统(仅用于usb设备启动,本地硬盘启动的话请勿使用本菜单)
                           command RUN --nt /bootmgr /ntldr
                      如果是usb-hdd启动的话会自动交换磁盘,不是的话会出现手动交换磁盘的提示
                      将首先查找/bootgmr文件,失败的话继续查找/ntldr文件
               3,检测到当前已加载字库的话,提示信息会自动变为中文,方便E文不好的用户,也可使用
                            set language=en::强制使用英文提示
                            set language=cn   ::强制使用中文提示
                      小提示:部分中文乱码的话请换用完整中文字库
               4,乱七八糟的细节更新
               

0211更新: 1,增加.log .inf文件的直接支持
                      目前直接支持.gz .ima .img .lzma .iso .0 .bin .lst .0pe .ini .txt .log .inf 以及 无后缀 文件,其他文件可通过--as.XXX参数得到支持
               2,应 jh1688 要求,--fira|--wvbk srs 参数加入无人值守安装文件winnt.sif的支持,格式如下
                      RUN --fira|--wvbk srs sif iso=/WIN$.ISO
                      注意:1) sif参数必须位于 srs 参数后
                               2) 无人值守应答文件需自备,本脚本不提供
                               3) sif默认加载RUN同目录下的winnt.sif文件,其他位置可自行通过命令指定,如
                                    
                                    --fira|--wvbk srs sif iso=/WIN$.ISO                   #将加载RUN同目录下的winnt.sif文件
                                    --fira|--wvbk srs sif:/winnt.sif iso=/WIN$.ISO   #将加载当前设备根目录下的winnt.sif文件
                                    --fira|--wvbk srs sif:/sn.txt iso=/WIN$.ISO         #将加载当前设备根目录下的sn.txt文件(会自动重命名为winnt.sif)

               

0210更新: 1,修正 hai2002713 以及 717758565 发现的mennu_config.txt文件含有utf8签名时会导致第一个文件名获取不准的bug
                      在此感谢
               2,取消--nomem参数
               3,借用hotdll的F6IMG增强--fira|--wvbk 参数的 srs 参数,仅支持hotdll整理的驱动包,支持驱动包散开或打包,感谢hotdll
                      驱动包默认放置在RUN同目录的SRS目录下,如

                            --fira|--wvbk srs iso=/WIN$.ISO                #将在RUN同目录下的SRS目录中寻找适合的驱动
                            --fira|--wvbk srs:/srs/ iso=/WIN$.ISO         #将在当前设备的/SRS/目录下寻找适合的驱动
                            --fira|--wvbk srs:iastor.img iso=/WIN$.ISO#将挂载/boot/imgs/iastor.img文件,并在其中寻找适合的驱动

                  
                  已打包好的驱动下载
                        LZMA压缩包版驱动:http://115.com/file/e7wh93pb#SRS_lzma.zip
                        散包版驱动:         http://115.com/file/c2mb5pvj#SRS_folder.zip

0204备份: 精简标签名数量,功能不变,取消--nomem参数
               

0130更新: 修正0128版的一处手误,影响引导文件的加载,建议更新
               因使用grub函数优化,重写了大部分代码,引导文件或镜像文件是否需要用kernel命令加载的模块更是完全重写,因此出现了手误
               

0128更新: 1,代码大换血,用grub函数优化了下,自动菜单及自动列表功能尽量节省时间
               2,增强--swap-ext参数,对hdd分区已可计算分区体积,更方便用户判断当前(hd0,0)是否为自己需要的
                      --automenu-all及--autolist-all参数一并增强,均可查看各hdd分区体积
               3,显示的细节改变,如自动菜单及自动列表,若文件夹后跟有"/",则说明该文件夹下还有文件,若无,则说明该文件夹下为空
                      其他的自己慢慢发现
               4,加了大量注释,直接后果是文件体积增大很多,感兴趣的慢慢看吧
               

0119更新: 1,细节改变,如自动列表文件夹为蓝色,文件为绿色,其他的慢慢发现吧
               2,自动列表增加翻页功能,视分辨率高度调整可显示的最大行数,如480高度最大可显示行为15,600高度最大可显示行为21,等
                      文件超多时,可按 + 向下翻页,按 - 向上翻页如
                            /TEST/文件夹下共200个文件,640×480分辨率下每屏幕可显示3列15行共45个文件,
                            输入 + 回车后,可显示46至90号文件,再输入 + 回车后将显示91至135号文件,
                            输入 - 回车后,可显示46至90号文件,再输入 - 回车后将显示1至45号文件
                      具体效果可以见下面截图
               

0117更新: 修正自动列表时一处计算错误,修正某些长文件名情况下,直接换行输出而不是继续输出的问题,不在意的话无需更新
               

0116更新: 完善自动列表中通过编号调用文件功能,已支持所有RUN命令,如自动列表后
               a) RUN> --as.iso 2                  ::将编号为2的文件作为iso文件启动
               b) RUN> --noboot --as.img 3   ::将编号为3的文件作为img文件加载,但不启动
               c) RUN> --fira 4                     ::加载firadisk驱动至fd0后将编号为4的文件作为iso文件启动
               d) RUN> --swap --fira iso=5   ::交换hd0及hd1后,加载firadisk至fd1,将编号为5的文件作为iso文件启动
               以此类推
               

0114更新: 1,自动列表对过长的文件名不再进行截断
               2,增加 --autolist-all 参数,自动列表的形式列出所有设备
               3,自动菜单及自动列表增加 --not-show.XXX... 参数,不显示指定的后缀名的文件
               4,其他一些细节的改变
               PS:补上上次更新的一些说明
               1,自动列表视显示宽度调整列数(如640宽度下最多3列,1024宽度下最多5列)
               2,自动菜单可通过变量 showsize 控制是否显示文件体积,
                      set showsize=0::不显示文件体积,即不计算文件体积,节省时间
                      set showsize=1::显示文件体积
               

0109更新: 1,简化标签
               2,增加 --autolist 参数,效果见截图,和automenu一样,支持全局变量、menu_config.txt、同名_config.txt三种方式导入参数
                      同样支持配合其他参数使用,如打算交换磁盘后启动编号为3的工具,可以输入 "--swap 3" 执行
                      注意对 --fira|wvbk 参数,执行 --fira 3 命令可以成功,执行 --fira iso=3 将失败
                      不足:1)文件名过长的自动截断, 2)没有分页
               

0105备份: 1222+版本简化标签后版本,留作备份
               

1222+更新: 修正1222版的一处手误,复制错代码了,影响pxe自动菜单失败时的返回处理,建议更新
               

1222更新: 1,自动菜单支持pxe,要求目标文件夹下存在名为 dir.txt 的文件,可以在cmd下用 dir /b 命令生成该文件,否则pxe下自动菜单会失败
               2, --set-var=value--mem--top这三个参数更改为永久有效,其他参数均为单次执行时有效
               3,--fira参数微调, 类似 --fira|--wvbk /pe.iso 命令将加载驱动至fd0,其余命令仍然将firadisk|wivblock驱动加载至fd1
               

1219更新: 1,继续显示的一些细节变化
               2,因grub4dos菜单模式最多显示255个项目,所以自动菜单至多处理前254个文件,避免文件过多时浪费时间
                     进度表示更改为每处理10个文件出现一个鬼脸,处理254个文件,在宽度为640的模式下正好显示一整行鬼脸
               

1218更新:   1,显示的一些细节变化
               2,生成自动菜单时加入进度表示,每处理20个文件出现一个鬼脸
               

1216更新: 1,自动菜单一些bug修正,感谢 joy7501   zqjiang   2011s2m 的报告和测试
               2,--swap-ext参数新增各硬盘容量大小显示,更方便判断磁盘,具体效果看截图
               3,一些细节优化,避免文件体积太大时计算体积出现错误
               

1214更新: 1,修正tulongwa、zqjiang发现的一些bug,其他一些细节更新,感谢帮助测试
               2,可以简单查看 .txt .inf .ini .log 文件内容
               3,meu_config.txt 格式更改为该文件夹下某文件名#title显示名#前置参数#后置参数#@
                      注:#不能省略,最后需以#@结束,可写入多行
                      避免输入法问题
               4,后置参数新增 --dts-list ,仅对1213版及之后的dos时代菜鸟工具箱可用,贴出所含工具列表,手动选择启动某项工具
               

1211更新: 1,增加新参数 --dev= ,和find的--devices=参数意义相同,只在指定的设备上查找文件
                      注:本版起默认只查找chpu四个设备,忽略软驱,除非使用--dev参数指定
               2,生成自动菜单时将在该文件夹下查找 menu_config.txt 文件,可通过该文件导入参数,
                      格式为   该文件夹下某文件名#title显示名#前置参数#后置参数#!   注:#不能省略,最后需以#!结束,可写入多行
                      例:/ISOS/目录下有 menu_config.txt、ISO1.ISO、ISO2.ISO及ISO3.ISO四个文件
                               men_config.txt内容为
                                 ISO1.ISO#this is a test#--mem##!
                                 ISO2.ISO###--dts-ext 1c#!
                                 ISO3.ISO##--mem##!
                              执行RUN /ISOS/ 生成目录后将导入这些参数
               

1207更新: 1,自动菜单每行显示的文件名长度随分辨率变化而变化.(gfxmenu模式不计算在内)
                      如640宽度的可显示57个英文字符或29个中文字符,800宽度的可显示77个英文字符或39个中文字符
               2,增强--fira参数,配合附件中的FIRADISK.IMG简化系统安装流程,用法不变。以 RUN --fira iso=/WIN$.ISO 为例,
                      使用标准版FIRADISK.IMG文件,第一次需执行该命令按回车从iso启动,重启后还需再执行一次该命令,按H键从硬盘启动继续安装,至安装完成
                      使用附件的增强版FIRAIDSK.IMG,第一次执行该命令按回车从iso启动,重启后直接从硬盘启动即可,无需再执行该命令。
                   增强版

1127更新: 1,修正自动菜单的一些bug,感谢 hai2002713 的帮助测试
                      注:1)目前自动菜单能显示的最长文件名长度是57个英文字符或29个中文字符,之后的会忽略
                            2)改用内存64M开始64K长度的区域存放生成的自动菜单,使用了内存256K开始的512字节长度的区域做临时区域
               2,代码小改,显示的一些细节变化
               

1120更新: 1,优化代码,减小体积
               2,增加 --swap-ext 参数,与 --swap 参数区别是:
                      --swap : 静默执行,仅磁盘交换成功后有提示,无人工干预,只交换一次即结束
                      --swap-ext : 需人工干预,先给出当前磁盘分布情况,按 S 进行交换,回车结束交换,可交换多次
               

1119更新: 修正 hai2002713 发现的自动菜单同名txt导入参数的bug,手误引起,建议更新
               

1117更新: 1,对生成的自动菜单进行对齐具体看截图
               2,生成的自动菜单文件后面加注体积
               3,--automenu-all 参数后可跟 --show.XXX.XXX…… 参数使用
               4,优化代码,本来想节省空间的,结果增加前面两项功能后代码增加了不少
               

1112更新: 1,增加参数 --automenu-all,生成目前所有设备的自动菜单,同时显示每项设备的编号、文件系统类型,磁盘类型信息。可见截图
                      至此自动菜单功能基本完成,可生成任意设备、任意目录下的菜单
               2,生成的自动菜单无条件过滤以 $ 开头的文件或文件夹
               3,--automenu的子参数 --show 附加后缀名无数量限制(添加一百个也行,不超过512字符即可)
               4,增加参数 --set-var=value,用户可以临时设置一些变量及值
               5,增强--swap参数,每次成功交换后给出当前磁盘情况,包括磁盘编号,文件系统类型,磁盘类型信息,若不符合要求可按 S 继续交换。可见截图
               6,借用zxw的fd2hd脚本,增强处理zip情况,将fd仿真为hd0,其余hd依次后置
               

1109更新:1,automenu生成自动菜单时文件夹优先,然后是文件,可以看作grub版的资源管理器,效果可以看截图
                  2,一些细小bug修正
                  

1108更新:1,修正 tulongwa 发现的在ud设备上自动菜单返回上级目录的bug,建议更新
                  2,增加对文件名含空格的文件夹及文件自动菜单的支持
                  

1104更新:对--automenu生成的自动菜单增加返回上级目录功能,具体自己体验吧,很实用的一个功能,最简单的命令 “RUN /”
                  

1103+更新:修正判断无后缀文件是否为文件夹的一处bug,建议更新
                  

1103更新:1,增强--automenu的附加参数--show,由单一后缀增强为多重后缀(目前最多判断10个),格式:
                     RUN --automenu --show.XX1.XX2.XX3.XX4.XX5.XX6.XX7.XX7.XX8.XX9.X10 /path/
                     执行 RUN --automenu --show /path/ 将显示path文件夹下的所有类型文件(txt文件、文件名为firadisk及winvblock的文件例外)
                  2,自动生成启动盘目录下菜单的话可以忽略--automenu参数,直接执行 RUN /path ,但此时不支持--show参数
                  3,生成的自动菜单项是目录的情况,执行该菜单项将自动生成该目录下文件的菜单,注:进入新菜单后将不能返回原自动菜单
                  

1011更新:1,调整--automenu部分代码,解决生成菜单后多余空格问题
                  2,一些细小bug的修正
                  

1031更新:调整--automenu参数中处理同名TXT文件的代码,不再强制要求TXT文件以回车结尾,其他功能不变
                  

1013更新:1,针对1004版grub4dos的更新调整--fira参数安装系统代码,避免0x7B蓝屏,命令格式不变
                  2,解决多参数连续调用的bug,调整maxdos工具箱、--automenu部分、swap部分代码
                  3,--automenu参数的附加参数 --show=.XXX 调整为 --show.XXX
                  

1011更新:1,自动菜单参数 --ext=.XXX 变更为--show=.XXX ,方便理解,自动菜单只显示指定后缀名的文件
                  2,新增参数 --as.XXX 参数,替代 --lst 参数,并进行增强,如
                     RUN --as.lst /BOOT/GRUB/MENU       #查找/BOOT/GRUB/MENU文件,强制识别为菜单文件并加载
                     RUN --as.iso /BOOT/IMGS/DTS.IMA   #查找/BOOT/IMGS/DTS.IMA文件,强制识别为ISO镜像文件并加载
                  3,一些细小bug的修正。

1010更新:   修正不能使用绝对路径的bug,感谢 jh1688 的反馈。

1008更新:   花了四个小时的时间继续完善退出机制。

1007+更新: 因作者2010527104427已经解决了直接调用工具箱内部工具的乱码问题,因此恢复原本调用MAXDOS工具箱的代码。

1007更新:   1,借用zxw的代码继续完善对 MAXDOS工具箱的支持,解决某些工具的乱码问题。
                   2,部分代码调整,用了1007版grub4dos的新增参数 ?_Boot 。
                   3,自动菜单增加新参数 --ext=.XXX ,用法 RUN --automenu --ext=.XXX /BOOT/IMGS/,表示只显示扩展名为.XXX的文件。

1006更新:   完善对dos时代菜鸟工具箱和MAXDOS工具箱的支持,对 DTS 开头的映像识别为dos时代菜鸟工具箱,对 MAX 开头的映像识别为MAXDOS工具箱。
                   兼容原有写法,参见http://bbs.wuyou.net/forum.php?mod=viewthread&tid=199056&page=12#pid2315460
                   1,dos时代菜鸟工具箱
                        原菜单 RUN DTS.IMA --dts-ext text xmgr 4c1 4a1 3a #用xmgr内存模式依次运行 ifsdrv驱动、网卡及ipx_tcp协议、ghost备份恢复三个模块
                        新菜单 command RUN DTS.IMA text xmgr 4c1 4a1 3a 或 command RUN 任意文件名.IMA --dts-ext text xmgr 4c1 4a1 3a
                   2,MAXDOS工具箱
                        原菜单 RUN MAXDOS.IMG --max-ext call GH.BAT 启动MAXDOS中的 ghsot
                        新菜单 command RUN MAXDOS.IMG GH或 command RUN MAX.IMG GH
                                 附加参数规则是根据\MAXDOS.IMG\soft\下面的bat批处理文件名确定的,如
                                 Diskgen.bat   Hddreg.batCHKDSK.BATCMOS.BATGH.BATMHDD.BATPQ.BATSFDISK.BAT等
                                 对应的参数就分别为 Diskgen Hddreg CHKDSK CMOS GH MHDD PQ SFDISK等

1004更新:   1,完善了批处理的退出机制,基本实现了“哪来的回哪去”,也可以通过设置变量menu指定错误返回时要加载的菜单文件,
                     如在菜单文件开头加入 set menu=/BOOT/GRUB/MENU.LST 一句,报错返回时将加载该菜单文件。
                   2,RUN --fira|--wvbk[-isonly[:/img.*]][-nodrive] [srs[:/img.*]]
                     1),将原来的 -nodisk 参数名变更为 -isonly,也兼容旧参数名。意义相同,表示直接从iso镜像启动。
                     2),增加新参数 -nodrive, 用法: RUN --fira-nodrive iso=ISO文件名,
                           表示不处理fd0以及fd1驱动,只提示从iso镜像启动进行系统第一阶段安装或从硬盘启动进行系统第二阶段安装。
                           适合配合 SRSF6 或者 DPMS 等处理好fd0及fd1驱动后使用。
                     3),将原来的 fd1 参数名变更为 srs ,意义相同,加载firadisk或winvblock之外的驱动。

0925更新:    代码细节调整,没增加什么新功能

0419更新:    1,针对 zhoubin 提出的加载firadisk驱动后启动PE.ISO镜像会出现两个两个光驱的问题作了修改
                     启动PE镜像的命令      RUN --fira|--wvbk /PE.ISO
                     启动系统镜像的命令   RUN --fira|--wvbk iso=/WIN$.ISO
                  2,增加错误提示,命令执行错误时会给出当前正在使用的命令,以及RUN的命令格式,返回到手动输入命令处
                  

0409+更新:1,一些乱七八糟的更新,基本没啥大的变化
                  2,修正 hai2002713 发现的加载第三方驱动的一处bug,不知什么时候手误删除了一处判断,建议更新
                  3,RUN --fira|--wvbk[-nodisk][:[/]fd.img] [fd1[:/fd.img]] iso=[/]file.iso hdd.img]
                        fd1 use /IASTOR.IMG as default.

0406更新:感谢2011happysong的发现 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=190946
                  修正firadisk驱动的ramos直接map启动问题

0331+更新:1,细节部分微调
                  2,RUN --fira|--wvbk[:[/]fd.img] ] 后可以加其他参数

                  例如:RUN --fira --automenu #先加载firadisk驱动然后自动生成菜单,菜单中的iso镜像都将自动加载firadisk驱动

                  最简单的: RUN --fira /PE.ISO#先加载firadisk驱动然后启动PE.ISO镜像(无需选择从镜像启动或硬盘启动)


0331更新:1,修正增加安装系统至img镜像产生的所有bug,均经过实机测试
                  2,调整--firadisk和--winvblock参数名为--fira和--wvbk,缩短长度,命令格式不变
                  RUN --fira|--wvbk[-nodisk][:[/]fd.img] ] iso=[/]file.iso hdd.img]

                  另,制作ramos的话推荐使用winvblock驱动,使用firadisk驱动制作的ramos可能会在滚动条处无限滚动,无法进入系统,尚不清楚原因

0330更新:1,将--fira-fd0参数与--firadisk参数合并,
                  2,对--firadisk参数和--winvblock参数增加安装到img镜像支持
                  3,取消--ramos-fira和--ramos-wvbk参数,合并至--firadisk和--winvblock参数中
                  格式:RUN --firadisk[:[/]fd.img] ] iso=[/]file.iso hdd.img]
                  具体示例见参数说明

                  新版的一个简单的应用:方便简单制作ramos

0327更新:增加 --fira-fd0[:/path] [-fd1:/path] /isofile 参数,需配合0.0.1.30版firadisk驱动,实现不载入内存,直接map方式安装xp系统
                  fd0 use /BOOT/IMGS/FIRADISK.IMG as default
                  fd1 use /IASTOR.IMG as default

                  注意:驱动文件和镜像文件需连续存储,且不能经过gzip压缩!!!可以使用contig.exe提前处理,保证文件连续存放

0323更新:修正查找文件的一处bug

0320更新:修正参数--swap的N多bug,建议更新

0318更新:1,修正上版在hdd模式下查找文件失败的错误,建议更新。
                  2,进一步增强相对路径支持,后续文件不以“/”或“(”开头时自动添加默认路径
                      (默认路径为/BOOT/IMGS/,可通过前置参数 set usrpath=/BOOT/ 来更改)

0317更新:1,修正部分代码;
                  2,取消--mem-noboot参数;
                  3,更改--nomem参数为前置,使用参数--mem和--nomem确定后续文件是否map至内存;
                  4,参数--pe后可跟pe引导文件或pe整体iso镜像,配合0.0.1.30版firadisk实现直接map镜像启动,无需载入内存;
                  5,调整参数--swap交换磁盘顺序,不再自动交换磁盘,需要时给出提示
                  6,调整ramos有关参数为--ramos(普通ramos,载入内存)、
                     --ramos-fira(使用firadisk驱动的ramos,默认不载入内存)、
                     --ramos-wvbk(使用winvblock驱动的ramos,默认不载入内存),
                     可配合--mem参数实现三种ramos均载入内存启动;
                   7,尝试处理不同启动环境,对识别为fd(usb-zip或fbinst启动)的情况均映射为最后一块磁盘

0228更新:1、修正 --automenu 参数的同名txt导入参数问题,之前的同名txt需要添加多个回车以凑足四行,现在只要保证以回车结尾就可以了(即最后一行必须为空行)
                  2、增加 --swap 参数,交换磁盘用(hd0->hd-1;;hd1->hd0),此参数后可跟任意其他参数或文件

0214更新:修正 --automenu 参数的一个问题,可能文件夹不存在却能生成空白菜单

0209更新:修正 --ramos 参数问题,谢谢 maanu 的反馈。

0207更新:调整自动菜单结构,调整部分全局参数,具体可参见下文 全局参数说明 部分。
                  改变对maxdos工具箱的支持,更方便调用内部参数,具体参见示例菜单。
                  增加 --ramos-nomem 参数,适用于11年0130版winvblock驱动制作的RAMOS(支持直接map,不必加载至内存)

0206更新:功能不变,只是调整结构,只支持新版

0124更新:借用zxw的代码,修正自动菜单8.3文件名问题。

0121更新:更新内容很多,大部分代码改写,不再需要WENV支持,参数基本全变,分前置参数和后置参数,部分参数支持嵌套
                  感谢yidawpf (天意)、Plantsoot (百草霜)、2010DOS622、tingyue-wu、tubaozi、blithewind、幸运的草、hai2002713、2011eli的帮助测试,特别感谢chenall和zxw两位

1229修正:修正ramos启动失败问题,感谢ahlai报告,建议更新

1225更新:一些细节更新;1、跟进dos时代菜鸟工具箱的更新,推荐使用170aau版工具箱,grub加载无需解压文件
                  2、增加ramos支持,命令格式 RUN ramos /RAMOS文件路径 /RAMOS引导文件,例:RUN ramos /RAMXP.IMG /ntldr
                  3、firadisk.img路径支持参数例:RUN firadisk /WIN$.ISO /IMGS/FIRA.IMG调用imgs文件夹下的fira.img
                      只输入RUN firadisk /WIN$.ISO 时调用默认路径下的FIRADISK.IMG (/BOOT/IMGS/下)
                  4、命令行下输入RUN [] /path/filename 可以直接启动,之前的版本需要输入RUN [] /path/filename 后再输入boot方可启动

1217更新:自动生成菜单增加指定菜单功能,如 RUN automenu /BOOT/IMGS/,会自动生成/BOOT/IMGS/目录下文件的菜单,具体应用见示例菜单,感谢butyes进行测试

1216更新:修正zhoubin指出的加载pe镜像没有外置情况,建议更新
                  普通iso镜像会先尝试直接map,失败后再map到内存,加载firadisk驱动的iso镜像会直接map到内存

1215更新:整合chenall大的自动生成菜单功能添加一些说明具体见菜单文件示例

[ 本帖最后由 sratlf 于 2013-3-12 23:14 编辑 ]

sratlf 发表于 2014-11-26 13:25:10

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

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

chenall 发表于 2010-12-12 16:35:46

不错,这样就更方便使用了,关于RUN一些需要注意的地方..
多加几个goto :eof

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


:isofile
map --mem %1 (0xff) || map %1 (0xff)
map --hook
call chain (0xff)
goto :eof

:imgfile
map --mem %1 (fd0)
map --hook
rootnoverify (fd0)
call chain ()+1
goto :eof

:dtsima
map --mem %1 (fd0)
map --hook
write --offset=317 (fd0)/autoexec.bat %2 end
root (fd0)
call chain (fd0)+1
goto :eof

:chain
chainloader %1 || chainloader --force %1
boot
goto unknown

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

:nofound
call back File not found
goto :eof

:error
call back Command error
goto :eof

:back
pause %1 %2 %3, press any key to return...
configfile (md)4+8

chenall 发表于 2010-12-8 08:20:11

用了许多WENV命令,可以利用新版的load把wenv加载到内存再使用,否则加载可能会很慢,因为执 行一次就要读一次.

sratlf 发表于 2010-12-8 08:40:51

本帖最后由 sratlf 于 2014-6-23 16:56 编辑

具体应用可见3#或1#模板
529#新版的一个简单的应用:方便简单制作ramos

thttht 发表于 2010-12-8 09:07:05

学习学习高手们的新作!

2010lifefx 发表于 2010-12-8 20:43:58

WENV什么时候支持多国语言?

sratlf 发表于 2010-12-12 12:43:38

本帖最后由 sratlf 于 2014-6-23 16:58 编辑

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

chenall 发表于 2010-12-12 16:40:23

还有一点...
尽量不要在批处理中使用configfile
因为这是不可返回命令,会造成内存占用无法释放.

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

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

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

sratlf 发表于 2010-12-12 17:08:46

回复 #8 chenall 的帖子

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

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

chenall 发表于 2010-12-12 17:52:09

goto :eof
就是跳到批处理文件的未尾执行.当然就是退出了.

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

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

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

run isofile FIRADISK

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

sratlf 发表于 2010-12-12 20:08:24

回复 #10 chenall 的帖子

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

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

butyes 发表于 2010-12-12 20:54:14

太方便了,大大缩短了写命令时间,顶楼主!

houxiren 发表于 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文件夹就可以使用了。谢谢。

sratlf 发表于 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)

不需要其他文件

sratlf 发表于 2010-12-13 01:35:10

@chenall

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

菜单中只写
title run
RUN

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

类似
title run
RUN
boot

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

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

houxiren 发表于 2010-12-13 10:02:33

回复 #14 sratlf 的帖子

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

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

再次谢谢sratlf版主。

chenall 发表于 2010-12-13 11:24:15

原帖由 sratlf 于 2010-12-13 01:35 发表 http://bbs.wuyou.net/images/common/back.gif
@chenall

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

菜单中只写
title run
RUN

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

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

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

tuxw 发表于 2010-12-13 12:52:04

title run
chainloader /NotFoundFile.bin || echo -n
run ...
这样可以暂时解决问题

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

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

wyscsf 发表于 2010-12-13 13:11:55

error 8kernel must be loaded before booting 这个错误提示该怎么处理啊?我都是按照楼主的方法制作的?

wyscsf 发表于 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 编辑 ]

sratlf 发表于 2010-12-13 15:49:29

@tuxw

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

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

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



@wyscsf

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

wyscsf 发表于 2010-12-13 18:53:21

回复 #21 sratlf 的帖子

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

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

chenall 发表于 2010-12-13 20:13:09

还是按照我的方式改得面目全非了.大家可以试试看有没有什么问题.
需要最新版本的GRUB4DOS(今天的版本)

!BAT
::GRUB4DOS 批处理脚本 run
::使用方法:
::RUN /path/filename.bin
::RUN FIRADISK /path/filename.iso
::RUN /path/filename.img
::RUN /path/fileldr
::来源无忧启动论坛:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182793&extra=page%3D1
::原版作者:sratlf ,修改:chenall
::需要的外部命令WENV下载:
::http://bbs.wuyou.net/forum.php?mod=viewthread&tid=182254&page=102#pid2110281
debug off
checkrange 20101213:-1 read 0x8278 || echo Err: Version too old! && exit 1
delmod -l wenv || insmod WENV
WENV check "%~1"=="" && goto input
:start
WENV check "firadisk"=="%~1" && goto firaiso
WENV check "%~1"=="" && goto help
echo -e \nNow loading %1...\n
find --set-root %1
WENV check ""=="%~x1" && goto chain
WENV check ".bin"=="%~x1" && goto binfile
WENV check ".iso"=="%~x1" && goto isofile
goto imgfile
:imgfile
map --mem %1 (fd0)
map --hook
WENV check "%~2"<>"" && write --offset=317 (fd0)/autoexec.bat %2 end
rootnoverify (fd0)
chainloader +1
goto :eof
:binfile
map --mem %1 (rd)
map --in-place ()+1 (hd0)
map --hook
root (hd0,0)
chainloader (rd)+1
goto :eof
:isofile
map %1 (0xff) || map --mem %1 (0xff)
map --hook
chainloader (0xff)
goto :eof
:chain
chainloader --force %1
goto :eof
:input
clear && echo -e \nPlease input the ISO/IMG PATH or press Enter to use /WIN$.ISO as default.\n
WENV set path=$U,$input,Input PATH here, begin with "/" :
WENV get path || clear && echo -e \nNow use /WIN$.ISO as default. && WENV set path=/WIN$.ISO
::这里因为wenv的问题目前暂时这样处理,否则可以直接
::WENV call call start %1 ${path}
WENV echo -n ${path} | call start %1
goto :eof
:firaiso
WENV check "%~2"=="" goto input
WENV echo -e \nNow loading firadisk\n
find --set-root /BOOT/IMGS/FIRADISK.IMG
map --mem /BOOT/IMGS/FIRADISK.IMG (fd1)
map --mem (md)+2880 (fd0)
map --hook
dd if=(fd1) of=(fd0) count=1
echo Now loading %2
call :isofile %2
echo -e \nPress "I" to boot from iso and any other key to continue System Installation(boot from harddisk).
::pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码.
checkrange 0x69,0x49 pause --wait=5 && goto :eof
find --set-root --devices=h /WIN_NT$.~BT/SETUPLDR.BIN && chainloader ()/WIN_NT$.~BT/SETUPLDR.BIN && exit
find --set-root --devices=h /NTLDR cat --length=0 /NTDETECT.COM
chainloader /NTLDR
goto :eof
:help
echo Usage: RUN file/binfile

sratlf 发表于 2010-12-13 20:44:59

@ wyscsf

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


@chenall

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

zxw 发表于 2010-12-13 21:26:46

原帖由 chenall 于 2010-12-13 20:13 发表 http://bbs.wuyou.net/images/common/back.gif
pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码....
呵,真是太好了,正在琢磨着准备建议增强这个功能……

wyscsf 发表于 2010-12-13 22:42:57

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

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

sratlf 发表于 2010-12-13 23:00:28

回复 #26 wyscsf 的帖子

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

wyscsf 发表于 2010-12-13 23:10:47

回复 #27 sratlf 的帖子

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

sratlf 发表于 2010-12-13 23:27:48

回复 #28 wyscsf 的帖子

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

zxw 发表于 2010-12-14 00:09:25

原帖由 chenall 于 2010-12-13 20:13 发表 http://bbs.wuyou.net/images/common/back.gif
pause命令经过增强,会返回按键的ASCII值.0x69,0x49分别是i的大小写ASCII码....
能支持管理命令就更爽了!^_^
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: RUN 1206 更新 支持磁盘交换,文件检索,自动菜单,自动列表,全自动安装nt5x系统