无忧启动论坛

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

[已解决] 搜索硬盘一级目录下的vhd/vhdx并启动的grub4dos批处理

[复制链接]
发表于 2014-9-8 15:16:20 | 显示全部楼层 |阅读模式
本帖最后由 qj_tzy 于 2014-9-15 22:22 编辑

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

   搜索文件并自动列选单的grub4dos批处理,我没有编写过,好像可以调用run,但没搞懂如何实现。诚请各位网友帮我,谢谢!
发表于 2014-9-8 15:57:49 | 显示全部楼层
搜索可以参考之前我写的批处理.

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

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

然后使用上面的filelist调用这个菜单就行了.

点评

请教chenall,调用filelist的参数问题 : 1.若不另外编写grub4dos代码,直接调用filelist,在用户选择文件后,想直接执行命令/ntboot/ntboot nt6=(hdx,y)/vhd_file_dir/sys.vhd || /ntboot/ntboot vboot=(hdx,y)/v  详情 回复 发表于 2014-9-9 11:52
谢谢指点,我按此试试,在实现过程中遇到问题时再向您请教。  详情 回复 发表于 2014-9-8 17:15
回复

使用道具 举报

 楼主| 发表于 2014-9-8 17:15:15 | 显示全部楼层
chenall 发表于 2014-9-8 15:57
搜索可以参考之前我写的批处理.

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

谢谢指点,我按此试试,在实现过程中遇到问题时再向您请教。
回复

使用道具 举报

 楼主| 发表于 2014-9-9 11:52:09 | 显示全部楼层
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-退出”三项菜单,其调用参数又该如何写。

谢谢!

点评

1.cmd="ntboot nt6=%1 || ntboot vboot=%1" 2.先写好菜单,具本路径用变量file cmd="set file=%1 ;; configfile (hdx,y)/path/menu.lst"  详情 回复 发表于 2014-9-9 12:40
回复

使用道具 举报

发表于 2014-9-9 12:40:10 | 显示全部楼层
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"

点评

我用以下两句之一,均未弹出选择菜单,不知为何,还望指点: set pathgrub=/g4dmenu/g4d/ set pntboot=/g4dmenu/ntboot/ntboot find --set-root --ignore-floppies --ignore-cd %pathgrub%grldr %pathgrub%f  详情 回复 发表于 2014-9-9 15:08
谢谢,我试试,不清楚时再请教!  详情 回复 发表于 2014-9-9 14:01
回复

使用道具 举报

 楼主| 发表于 2014-9-9 14:01:15 | 显示全部楼层
chenall 发表于 2014-9-9 12:40
1.cmd="ntboot nt6=%1 || ntboot vboot=%1"

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

谢谢,我试试,不清楚时再请教!
回复

使用道具 举报

 楼主| 发表于 2014-9-9 15:08:30 | 显示全部楼层
本帖最后由 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。

回复

使用道具 举报

发表于 2014-9-9 21:10:19 | 显示全部楼层
估计你是没有认真看文章

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

点评

今天我又测试,始终未出现文件选择菜单,不知是参数错误,还是其他原因,我现在已无法了,诚请chenall大在百忙中再次给予指点,谢谢!  详情 回复 发表于 2014-9-13 09:39
在批处理中调用需要使用%%1 即,需要多一个%1的参数,这个参数用于接收文件参数.可以放在cmd参数的任意位置. 并且支持类拟%~dpnx1的格式. 昨天我一直没来得及看,刚才我看了一下调用说明,仍然没看明白您贴  详情 回复 发表于 2014-9-11 15:06
今天有空时再看看,谢谢指点!  详情 回复 发表于 2014-9-10 09:01
回复

使用道具 举报

 楼主| 发表于 2014-9-10 09:01:00 | 显示全部楼层
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

今天有空时再看看,谢谢指点!
回复

使用道具 举报

 楼主| 发表于 2014-9-11 15:06:58 | 显示全部楼层
本帖最后由 qj_tzy 于 2014-9-11 15:15 编辑
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

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

昨天我一直没来得及看,刚才我看了一下调用说明,仍然没看明白您贴出上段的意思,难道是将我在7楼贴出的调用语句中的%1直接换为%%1就可以了,还是该其他怎么做,我是在主启动代码中调用的,不是在批处理中调用的,我还是将%1换为%%1后测试,仍然未弹出选择文件的界面(我的硬盘中有多个VHD文件),因为没看懂您贴出上段的意思,所以现在不知该怎样做了,还望您能在百忙中继续给予指点,谢谢!
回复

使用道具 举报

 楼主| 发表于 2014-9-13 09:39:28 | 显示全部楼层
chenall 发表于 2014-9-9 21:10
估计你是没有认真看文章

今天我又测试,始终未出现文件选择菜单,不知是参数错误,还是其他原因,我现在已无法了,诚请chenall大在百忙中再次给予指点,谢谢!
回复

使用道具 举报

发表于 2014-9-13 11:44:07 | 显示全部楼层
截图!!!!还有详细情况!!!!!

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




点评

调用命令如下: 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  详情 回复 发表于 2014-9-13 13:09
回复

使用道具 举报

 楼主| 发表于 2014-9-13 13:09:30 | 显示全部楼层
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

截图如下:
运行filelist.lst截图.jpg
回复

使用道具 举报

发表于 2014-9-13 13:43:32 | 显示全部楼层
本帖最后由 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也就是只找当前分区

点评

谢谢指点! 刚才,我加了参数devs="--devices=h" 进行测试,结果仍然如13楼。 我用的是双硬盘,一个硬盘是MBR分区,在一个隐藏分区\vhdos\目录下存放有多个vhdx/vhd文件; 一个硬盘是GPT分区,在一个隐藏分区\v  详情 回复 发表于 2014-9-13 16:03
回复

使用道具 举报

 楼主| 发表于 2014-9-13 16:03:18 | 显示全部楼层
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文件的两个硬盘的该分区都改为显现分区后,也没查到。不知为何。还望指点,谢谢!
回复

使用道具 举报

发表于 2014-9-13 16:19:43 | 显示全部楼层
总算回答了我的第一个问题VHD文件位置,你的文件不在根目录下,直接默认情况下肯定找不到了.

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

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

或者如果使用了相同的目录比如vhdos那也可以指定root参数 速度会比较快.

点评

谢谢指点! 我还以为subdir=1就是搜索一级目录,实际却是搜索根目录,我加入subdir=2参数后,使用下句搜索成功: pathgrub%filelist.lst cmd="%pntboot% nt6=%1 || %pntboot% vboot=%1" ext=".vhdx .vhd" devs="--  详情 回复 发表于 2014-9-13 18:10
回复

使用道具 举报

 楼主| 发表于 2014-9-13 18:10:18 | 显示全部楼层
本帖最后由 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
但无搜索的过程(用上上句搜索用了几秒的时间,有等待的感觉,而此句无等待感觉),也未弹出选择文件的菜单,就直接进入了我自定义的菜单中,当然该菜单中也无选择的文件信息,是否又是参数出错?还请指点,谢谢!
回复

使用道具 举报

发表于 2014-9-13 18:32:32 | 显示全部楼层
这个估计是有BUG,被直接执行了.我明天再试下.

点评

近一两天来,我已多次进入http://chenall.net/post/g4d_filelist/,关注其中的更新情况。 我感觉到您最近在忙于排除新版grub4dos的BUG,没能抽出时间来帮我解决17楼的问题。 但我还是非常想恳请您,抽空帮我解  详情 回复 发表于 2014-9-15 15:24
好的,谢谢!  详情 回复 发表于 2014-9-13 21:07
回复

使用道具 举报

 楼主| 发表于 2014-9-13 21:07:14 | 显示全部楼层
chenall 发表于 2014-9-13 18:32
这个估计是有BUG,被直接执行了.我明天再试下.

好的,谢谢!
回复

使用道具 举报

 楼主| 发表于 2014-9-15 15:24:41 | 显示全部楼层
chenall 发表于 2014-9-13 18:32
这个估计是有BUG,被直接执行了.我明天再试下.

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

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

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

使用道具 举报

发表于 2014-9-15 16:01:29 | 显示全部楼层
抱歉,因为时间比较紧,我一会尽量抽空看一下,应该是这个批处理的BUG.
回复

使用道具 举报

发表于 2014-9-15 18:30:00 | 显示全部楼层
试了一下,发现暂时不支持多命令或命令组合(要支持非常的麻烦),

建议你把命令弄成一个文件
比如下面的
%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



点评

在您的热心指点和帮助下,此问题已得到圆满解决,再次表示衷心感谢!  详情 回复 发表于 2014-9-15 22:21
回复

使用道具 举报

 楼主| 发表于 2014-9-15 22:21:39 | 显示全部楼层
chenall 发表于 2014-9-15 18:30
试了一下,发现暂时不支持多命令或命令组合(要支持非常的麻烦),

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

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

使用道具 举报

发表于 2014-9-16 10:54:08 | 显示全部楼层
求楼主 分享下 该批处理成品

点评

该批处理成品是chenall 大编写的,可在2楼下载。 我只是调用它而已。  详情 回复 发表于 2014-9-16 12:09
回复

使用道具 举报

 楼主| 发表于 2014-9-16 12:09:43 | 显示全部楼层
yuliwu2 发表于 2014-9-16 10:54
求楼主 分享下 该批处理成品

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

我只是调用它而已。
回复

使用道具 举报

发表于 2014-10-26 14:54:15 | 显示全部楼层
能否请楼主分享一下调用的具体命令及操作方法,我是纯菜鸟,完全没有入门,希望能向你们前辈学习,万分感谢!

点评

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_  详情 回复 发表于 2014-10-27 13:54
回复

使用道具 举报

 楼主| 发表于 2014-10-27 13:54:31 | 显示全部楼层
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根据自己的实际情况编制

点评

大大,我还是没搞定,菜单能搜索到各VHD系统,但是无法进入,显示KERNEL 没有加载。还是想麻烦你贡献一下你的全部资料“slt_boot_file_cmd.lst”,我想从COPY学起,再慢慢琢磨,很喜欢这个功能呀。虽然NTBOOT很好用  详情 回复 发表于 2014-10-28 19:17
非常感谢,明天试一下,我也是两个盘,一个gpt,一个mbr  详情 回复 发表于 2014-10-27 23:16
回复

使用道具 举报

发表于 2014-10-27 23:16:22 来自手机 | 显示全部楼层
qj_tzy 发表于 2014-10-27 13:54
title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cm ...

非常感谢,明天试一下,我也是两个盘,一个gpt,一个mbr
回复

使用道具 举报

发表于 2014-10-28 19:17:07 | 显示全部楼层
qj_tzy 发表于 2014-10-27 13:54
title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的vhdx/vhd系统文件
filelist.lst cm ...

大大,我还是没搞定,菜单能搜索到各VHD系统,但是无法进入,显示KERNEL 没有加载。还是想麻烦你贡献一下你的全部资料“slt_boot_file_cmd.lst”,我想从COPY学起,再慢慢琢磨,很喜欢这个功能呀。虽然NTBOOT很好用,但需要手动输入,或清单只能加载有限的几个,有了你这个搜索并加载功能,就方便多了。谢谢!

点评

下载附件: 此附件还有以下功能: title 搜索启动所有硬盘各分区(含gpt隐藏分区)根、一级、二级目录下的wim/vmdk/ima/img/iso系统文件 %pathgrub%filelist.lst cmd="%pathgrub%slt_boot_file_cmd.lst %1"  详情 回复 发表于 2014-10-28 21:00
回复

使用道具 举报

 楼主| 发表于 2014-10-28 21:00:30 | 显示全部楼层
本帖最后由 qj_tzy 于 2014-10-28 21:07 编辑
2012sillian 发表于 2014-10-28 19:17
大大,我还是没搞定,菜单能搜索到各VHD系统,但是无法进入,显示KERNEL 没有加载。还是想麻烦你贡献一下 ...


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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 07:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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