无忧启动论坛

标题: 搜索硬盘一级目录下的vhd/vhdx并启动的grub4dos批处理 [打印本页]

作者: qj_tzy    时间: 2014-9-8 15:16
标题: 搜索硬盘一级目录下的vhd/vhdx并启动的grub4dos批处理
本帖最后由 qj_tzy 于 2014-9-15 22:22 编辑

    最近想用grub4dos实现以下功能:搜索硬盘各分区(包括mbr分区硬盘及gpt分区硬盘的隐藏分区)一级目录下的vhd/vhdx文件,列出选择菜单供用户按上下键+回车选择,用户选择后再出现“1-按原生vhd启动,2-按vboot驱动vhd启动,3-退出”三项选单的菜单。

   搜索文件并自动列选单的grub4dos批处理,我没有编写过,好像可以调用run,但没搞懂如何实现。诚请各位网友帮我,谢谢!

作者: chenall    时间: 2014-9-8 15:57
搜索可以参考之前我写的批处理.

http://chenall.net/post/g4d_filelist/

至于选择后出现“1-按原生vhd启动,2-按vboot驱动vhd启动,3-退出”三项选单的菜单。
这个可以自己写一个菜单,具体路径用变量代替.

然后使用上面的filelist调用这个菜单就行了.
作者: qj_tzy    时间: 2014-9-8 17:15
chenall 发表于 2014-9-8 15:57
搜索可以参考之前我写的批处理.

http://chenall.net/post/g4d_filelist/

谢谢指点,我按此试试,在实现过程中遇到问题时再向您请教。
作者: qj_tzy    时间: 2014-9-9 11:52
chenall 发表于 2014-9-8 15:57
搜索可以参考之前我写的批处理.

http://chenall.net/post/g4d_filelist/

请教chenall,调用filelist的参数问题 :

1.若不另外编写grub4dos代码,直接调用filelist,在用户选择文件后,想直接执行命令/ntboot/ntboot nt6=(hdx,y)/vhd_file_dir/sys.vhd || /ntboot/ntboot vboot=(hdx,y)/vhd_file_dir/sys.vhd,其中cmd=""中的这句该如何写。

2.若想另外编写grub4dos代码,在调用filelist后,如何返回用户选择文件的硬盘号(hdx,y)、所在目录、文件名,以在后续的代码中再编写“1-按原生vhd启动,2-按vboot驱动vhd启动,3-退出”三项菜单,其调用参数又该如何写。

谢谢!
作者: chenall    时间: 2014-9-9 12:40
qj_tzy 发表于 2014-9-9 11:52
请教chenall,调用filelist的参数问题 :

1.若不另外编写grub4dos代码,直接调用filelist,在用户选择 ...

1.cmd="ntboot nt6=%1 || ntboot vboot=%1"

2.先写好菜单,具本路径用变量file
cmd="set file=%1 ;; configfile (hdx,y)/path/menu.lst"
作者: qj_tzy    时间: 2014-9-9 14:01
chenall 发表于 2014-9-9 12:40
1.cmd="ntboot nt6=%1 || ntboot vboot=%1"

2.先写好菜单,具本路径用变量file

谢谢,我试试,不清楚时再请教!
作者: qj_tzy    时间: 2014-9-9 15:08
本帖最后由 qj_tzy 于 2014-9-9 15:43 编辑
chenall 发表于 2014-9-9 12:40
1.cmd="ntboot nt6=%1 || ntboot vboot=%1"

2.先写好菜单,具本路径用变量file


我用以下两句之一,均未弹出选择菜单,不知为何,还望指点:

set pathgrub=/g4dmenu/g4d/
set pntboot=/g4dmenu/ntboot/ntboot
find --set-root --ignore-floppies --ignore-cd %pathgrub%grldr

%pathgrub%filelist cmd="%pntboot% nt6=%1 || %pntboot% vboot=%1" ext=".vhdx .vhd"

#或下句
%pathgrub%filelist cmd="set sltfile=%1 ;; configfile %pathgrub%slt_boot_vhd_accept.lst" ext=".vhdx .vhd"
boot

说明:

1.您提供的那段选择文件批处理,我已复制保存utf-8格式命名为filelist,保存在/g4dmenu/g4d/
2.另编的菜单slt_boot_vhd_accept.lst,运行查看sltfile变量时,其内容为空。
3.我用的grub4dos为0.46a 2014-9-4。


作者: chenall    时间: 2014-9-9 21:10
估计你是没有认真看文章

  1. 在批处理中调用需要使用%%1
  2. 即,需要多一个%1的参数,这个参数用于接收文件参数.可以放在cmd参数的任意位置.
  3. 并且支持类拟%~dpnx1的格式.
复制代码

作者: qj_tzy    时间: 2014-9-10 09:01
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

今天有空时再看看,谢谢指点!
作者: qj_tzy    时间: 2014-9-11 15:06
本帖最后由 qj_tzy 于 2014-9-11 15:15 编辑
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

在批处理中调用需要使用%%1
即,需要多一个%1的参数,这个参数用于接收文件参数.可以放在cmd参数的任意位置.
并且支持类拟%~dpnx1的格式.

昨天我一直没来得及看,刚才我看了一下调用说明,仍然没看明白您贴出上段的意思,难道是将我在7楼贴出的调用语句中的%1直接换为%%1就可以了,还是该其他怎么做,我是在主启动代码中调用的,不是在批处理中调用的,我还是将%1换为%%1后测试,仍然未弹出选择文件的界面(我的硬盘中有多个VHD文件),因为没看懂您贴出上段的意思,所以现在不知该怎样做了,还望您能在百忙中继续给予指点,谢谢!
作者: qj_tzy    时间: 2014-9-13 09:39
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

今天我又测试,始终未出现文件选择菜单,不知是参数错误,还是其他原因,我现在已无法了,诚请chenall大在百忙中再次给予指点,谢谢!
作者: chenall    时间: 2014-9-13 11:44
截图!!!!还有详细情况!!!!!

这个批处理不管怎么样都会有菜单显示的,除非运行错误.运行错误也会有提示的...





作者: qj_tzy    时间: 2014-9-13 13:09
chenall 发表于 2014-9-13 11:44
截图!!!!还有详细情况!!!!!

这个批处理不管怎么样都会有菜单显示的,除非运行错误.运行错误也会有提示的. ...

调用命令如下:
set pathgrub=/g4dmenu/g4d/
set pntboot=/g4dmenu/ntboot/ntboot
find --set-root --ignore-floppies --ignore-cd %pathgrub%grldr

set m.cmd="%pntboot% nt6=%1 || %pntboot% vboot=%1"
set m.ext=".vhdx .vhd"
%pathgrub%filelist.lst
boot

截图如下:


作者: chenall    时间: 2014-9-13 13:43
本帖最后由 chenall 于 2014-9-13 15:41 编辑

1.你的VHDX/VHD文件在什么目录下
2.devs参数没有指定时默认只找当前磁盘.

试试下面的查找所有硬盘

filelist.lst cmd="%pntboot% nt6=%1 || %pntboot% vboot=%1"  ext=".vhdx .vhd" devs="--devices=h"


devs 指定了要查询的条件(find命令的参数),默认情况下是--set-root也就是只找当前分区
作者: qj_tzy    时间: 2014-9-13 16:03
chenall 发表于 2014-9-13 13:43
1.你的VHDX/VHD文件在什么目录下
2.devs参数没有指定时默认只找当前磁盘.

谢谢指点!
刚才,我加了参数devs="--devices=h" 进行测试,结果仍然如13楼。

我用的是双硬盘,一个硬盘是MBR分区,在一个隐藏分区\vhdos\目录下存放有多个vhdx/vhd文件;
一个硬盘是GPT分区,在一个隐藏分区\vhdos_gpt\目录下存放有多个vhdx/vhd文件。

我是分别用两个硬盘启动grub4dos进行测试的,结果都一样。我把存放vhd文件的两个硬盘的该分区都改为显现分区后,也没查到。不知为何。还望指点,谢谢!

作者: chenall    时间: 2014-9-13 16:19
总算回答了我的第一个问题VHD文件位置,你的文件不在根目录下,直接默认情况下肯定找不到了.

subdir 指定要查找的目录级数,默认1

你可以指定为2会查找二级目录下的,如果有更多级需要改为更大的数字(但越大速度越慢)

或者如果使用了相同的目录比如vhdos那也可以指定root参数 速度会比较快.
作者: qj_tzy    时间: 2014-9-13 18:10
本帖最后由 qj_tzy 于 2014-9-13 18:11 编辑
chenall 发表于 2014-9-13 16:19
总算回答了我的第一个问题VHD文件位置,你的文件不在根目录下,直接默认情况下肯定找不到了.

subdir 指定 ...


谢谢指点!
我还以为subdir=1就是搜索一级目录,实际却是搜索根目录,刚才我加入subdir=2参数后,使用下句搜索成功:
pathgrub%filelist.lst cmd="%pntboot% nt6=%1 || %pntboot% vboot=%1" ext=".vhdx .vhd" devs="--devices=h" subdir=2
但就是遇vboot驱动的vhd系统首先以nt6方式执行会出错,所以改为
%pathgrub%filelist.lst cmd="set sltfile=%1 ;; configfile %pathgrub%slt_boot_vhd_accept.lst" ext=".vhdx .vhd" devs="--devices=h" subdir=2
但无搜索的过程(用上上句搜索用了几秒的时间,有等待的感觉,而此句无等待感觉),也未弹出选择文件的菜单,就直接进入了我自定义的菜单中,当然该菜单中也无选择的文件信息,是否又是参数出错?还请指点,谢谢!
作者: chenall    时间: 2014-9-13 18:32
这个估计是有BUG,被直接执行了.我明天再试下.
作者: qj_tzy    时间: 2014-9-13 21:07
chenall 发表于 2014-9-13 18:32
这个估计是有BUG,被直接执行了.我明天再试下.

好的,谢谢!
作者: qj_tzy    时间: 2014-9-15 15:24
chenall 发表于 2014-9-13 18:32
这个估计是有BUG,被直接执行了.我明天再试下.

近一两天来,我已多次进入http://chenall.net/post/g4d_filelist/,关注其中的更新情况。

我感觉到您最近在忙于排除新版grub4dos的BUG,没能抽出时间来帮我解决17楼的问题。

但我还是非常想恳请您,抽空帮我解决一下这个问题,谢谢!

作者: chenall    时间: 2014-9-15 16:01
抱歉,因为时间比较紧,我一会尽量抽空看一下,应该是这个批处理的BUG.
作者: chenall    时间: 2014-9-15 18:30
试了一下,发现暂时不支持多命令或命令组合(要支持非常的麻烦),

建议你把命令弄成一个文件
比如下面的
%pathgrub%filelist.lst cmd="set sltfile=%1 ;; configfile %pathgrub%slt_boot_vhd_accept.lst" ext=".vhdx .vhd" devs="--devices=h" subdir=2

把cmd命令"set sltfile=%1 ;; configfile %pathgrub%slt_boot_vhd_accept.lst"放到一个批处理中比如ls_cmd
然后用以下命令调用,也就是cmd参数不支持复合命令
%pathgrub%filelist.lst cmd="ls_cmd %1" ext=".vhdx .vhd" devs="--devices=h" subdir=2




作者: qj_tzy    时间: 2014-9-15 22:21
chenall 发表于 2014-9-15 18:30
试了一下,发现暂时不支持多命令或命令组合(要支持非常的麻烦),

建议你把命令弄成一个文件

在您的热心指点和帮助下,此问题已得到圆满解决,再次表示衷心感谢!

作者: yuliwu2    时间: 2014-9-16 10:54
求楼主 分享下 该批处理成品
作者: qj_tzy    时间: 2014-9-16 12:09
yuliwu2 发表于 2014-9-16 10:54
求楼主 分享下 该批处理成品

该批处理成品是chenall 大编写的,可在2楼下载。

我只是调用它而已。

作者: 2012sillian    时间: 2014-10-26 14:54
能否请楼主分享一下调用的具体命令及操作方法,我是纯菜鸟,完全没有入门,希望能向你们前辈学习,万分感谢!
作者: qj_tzy    时间: 2014-10-27 13:54
2012sillian 发表于 2014-10-26 14:54
能否请楼主分享一下调用的具体命令及操作方法,我是纯菜鸟,完全没有入门,希望能向你们前辈学习,万分感谢 ...

title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cmd="slt_boot_file_cmd.lst %1" ext=".vhdx .vhd" devs="--devices=h" subdir=3
boot

#注:slt_boot_file_cmd.lst根据自己的实际情况编制
作者: 2012sillian    时间: 2014-10-27 23:16
qj_tzy 发表于 2014-10-27 13:54
title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cm ...

非常感谢,明天试一下,我也是两个盘,一个gpt,一个mbr
作者: 2012sillian    时间: 2014-10-28 19:17
qj_tzy 发表于 2014-10-27 13:54
title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cm ...

大大,我还是没搞定,菜单能搜索到各VHD系统,但是无法进入,显示KERNEL 没有加载。还是想麻烦你贡献一下你的全部资料“slt_boot_file_cmd.lst”,我想从COPY学起,再慢慢琢磨,很喜欢这个功能呀。虽然NTBOOT很好用,但需要手动输入,或清单只能加载有限的几个,有了你这个搜索并加载功能,就方便多了。谢谢!
作者: qj_tzy    时间: 2014-10-28 21:00
本帖最后由 qj_tzy 于 2014-10-28 21:07 编辑
2012sillian 发表于 2014-10-28 19:17
大大,我还是没搞定,菜单能搜索到各VHD系统,但是无法进入,显示KERNEL 没有加载。还是想麻烦你贡献一下 ...


下载附件:
file.rar (3.15 KB, 下载次数: 105)

当然,此附件要根据自己的实际情况改进一下。

此附件还有以下功能:

title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的wim/vmdk/ima/img/iso系统文件
%pathgrub%filelist.lst cmd="%pathgrub%slt_boot_file_cmd.lst %1" ext=".wim .vmdk .ima .img .iso" devs="--devices=h" subdir=3
boot

作者: 2012sillian    时间: 2014-10-29 22:37
谢谢大大的无私奉献,很好用,向大大们致敬!!
只是搜索速度比想像的要慢一些,ISO类PE或者XP原版安装系统加载都不太成功,IMA和IMG没有问题
作者: 朝生涵    时间: 2014-11-1 02:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2012bobnayou    时间: 2016-1-13 16:21
qj_tzy 发表于 2014-10-27 13:54
title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cm ...

很好
作者: Myptour    时间: 2017-5-28 17:34
本帖最后由 Myptour 于 2017-5-29 18:19 编辑

居然找到了,谢谢分享
作者: Myptour    时间: 2017-5-29 18:18
本帖最后由 Myptour 于 2017-5-29 18:19 编辑

VHDg4dmenu (1).rar (1.39 MB, 下载次数: 139)

打个包

VHDg4dmenu (2).rar

1.39 MB, 下载次数: 128

VHDg4dmenu (3).rar

1.35 MB, 下载次数: 102


作者: qj_tzy    时间: 2017-5-30 07:49
Myptour 发表于 2017-5-29 18:18
打个包

很好,可方便需要之网友!
作者: syamn7    时间: 2019-7-21 00:37
谢谢分享
作者: 2011cqxc123    时间: 2020-5-12 22:20
机器中安装的操作系统是WIN8.1
我用U盘启动机器到DOS环境,再通过GRUB4DOS调用G4DMENU脚本在搜索机器中的VHD时报“kernel must be loaded before booting”错误,但如果机器中安装的操作系统是XP和WIN7系统时,搜索和引导机器中的VHD却没有任何问题,为什么会这样啊?
作者: tester008    时间: 2020-6-3 09:15
谢谢分享
作者: xnskzx    时间: 2020-7-18 23:49
来学习一下怎么写




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3