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

能否对find /file 的结果进行判断

[复制链接]
发表于 2019-6-10 16:34:51 | 显示全部楼层 |阅读模式
比如:
find /winpe.wim
(hd0,0)
(hd1,0)

我想根据结果判断如果有(hd1,0),就设(hd1,0)为变量p,比如:
kernel /wimboot
initrd ……@boot.wim=%p%/winpe.wim
发表于 2019-6-10 17:09:02 | 显示全部楼层
grub4dos 命令参数我一点都不懂,遇到问题没人解答的情况下我也有好奇心。

看到说明文档里有此一行引起我的想像
find --set-root /file.ext || echo file not found.
弄两个菜单项分别是对于(hd0及hd1)进行处理,两菜单添加上以下这句:(自己改正确)
find --set-root /winpe.wim || set p=???
|| 前面的语句如果失败就会执行后面的语句。

自己变通一下试试这个方法。

点评

谢谢你的建议 以前我从不评分,因为我也没详细了解评分的作用 后来我评过分,但发现容易引起矛盾,我现在也不会评分了,当然,别人的帮助会记住的,相信愿意参与技术的朋友也不会计较有没有评分 --------------  详情 回复 发表于 2019-6-11 12:45
来看看,老五大元帅写了一个自动排除U盘的代码,在13楼  详情 回复 发表于 2019-6-11 11:39
谢谢回复 你的菜单可行,若能更精简一些就好  详情 回复 发表于 2019-6-10 18:36
回复

使用道具 举报

 楼主| 发表于 2019-6-10 17:38:10 | 显示全部楼层
527104427 发表于 2019-6-10 17:15
set p=
find /winpe.wim | call  :a

问一下,能否用于菜单中
回复

使用道具 举报

发表于 2019-6-10 18:26:30 | 显示全部楼层
好尴尬!
回复

使用道具 举报

 楼主| 发表于 2019-6-10 18:36:17 | 显示全部楼层
chishingchan 发表于 2019-6-10 17:09
grub4dos 命令参数我一点都不懂,遇到问题没人解答的情况下我也有好奇心。

看到说明文档里有此一行引起 ...

谢谢回复
你的菜单可行,若能更精简一些就好
回复

使用道具 举报

 楼主| 发表于 2019-6-10 19:18:57 | 显示全部楼层
527104427 发表于 2019-6-10 18:53
菜单中这样试试:

set p= &; cat --length=0 (hd1,0)/winpe.wim && set p=(hd1,0)

谢谢回复

这个菜单我知道它的作用,不用测试,能行的, (hd1,0)能为变量就更好了

我自己写的菜单太复杂了:
title 启动Windows8pe用wimboot
set l=(md)0x60500+0x100
find /winpe.wim > %l%
cat --locatei=hd1 %l% > nul && cat --skip=10 %l% | set p=
kernel /grub4dos/wimboot index=1
initrd ...@boot.wim=%p%/winpe.wim
boot
回复

使用道具 举报

 楼主| 发表于 2019-6-10 19:57:13 | 显示全部楼层
527104427 发表于 2019-6-10 19:39
这不是挺强的吗,没办法再简化了吧?

好像存在一个问题,cat的--skip是为了跳过(hd0,0),如果(hd0,0)上不存在winpe.wim,cat就不能用--skip
回复

使用道具 举报

 楼主| 发表于 2019-6-11 09:10:40 | 显示全部楼层
527104427 发表于 2019-6-10 20:54
title 启动Windows8pe用wimboot
set l=(md)0x60500+0x100 &; find /winpe.wim > %l% &; cat --locatei ...

我把你的代码放在菜单里,结果报错:filename must ……
echo %p%,显示结果不是分区号

我把 &; 去掉,并以它的位置换行写入菜单,结果仍然如上

你的代码该怎样加入菜单
回复

使用道具 举报

 楼主| 发表于 2019-6-11 10:00:37 | 显示全部楼层
527104427 发表于 2019-6-11 09:15
什么版本的g4d?

刚才有一处%star_num%应该是0x%star_num%,改了一下

谢谢,成功了,果然是前面的%star_num%少加了0x

你的代码实现了我的目的:
U盘启动时(U盘只有1个分区),只要电脑硬盘哪个分区根目录有winpe.wim,就启动硬盘分区根目录的winpe.wim,而不启动U盘分区根目录的winpe.wim
U盘没有winpe.wim,硬盘分区根目录有winpe.wim,就启动硬盘分区根目录的winpe.wim
U盘有winpe.wim,如果硬盘所有分区根目录没有winpe.wim,就启动U盘分区根目录的winpe.wim
回复

使用道具 举报

 楼主| 发表于 2019-6-11 10:25:17 | 显示全部楼层
527104427 发表于 2019-6-11 10:04
更精炼一点,可以 cat --locatei=(hd1 --number=1 %l% | set star_num=0x
这样后面的 %star_num% 就不用 ...

谢谢

只是问一问,如果U盘有两个及以上分区,且里有都有winpe.wim,不知你的代码能否排除U盘的分区,当然,实际情况我也只分一个区,分太多分区且都有winpe.wim也没意思

如果GRUB4DOS能根据设备类型排除U盘就方便了,可是它都认为是h类型
回复

使用道具 举报

 楼主| 发表于 2019-6-11 11:37:37 | 显示全部楼层
527104427 发表于 2019-6-11 10:52
仔细看一下代码应该能够理解吧,所有hd1以外的分区都忽略,只需要hd1的第一个分区,而不管hd1有多少分 ...

哦,明白了,U盘不管有多少分区都是hd0(如果U盘是一启)

不好意思,我看代码和写代码水平很吃力
回复

使用道具 举报

 楼主| 发表于 2019-6-11 11:39:40 | 显示全部楼层
chishingchan 发表于 2019-6-10 17:09
grub4dos 命令参数我一点都不懂,遇到问题没人解答的情况下我也有好奇心。

看到说明文档里有此一行引起 ...

来看看,老五大元帅写了一个自动排除U盘的代码,在13楼
回复

使用道具 举报

 楼主| 发表于 2019-6-11 12:45:28 | 显示全部楼层
chishingchan 发表于 2019-6-10 17:09
grub4dos 命令参数我一点都不懂,遇到问题没人解答的情况下我也有好奇心。

看到说明文档里有此一行引起 ...

谢谢你的建议

以前我从不评分,因为我也没详细了解评分的作用
后来我评过分,但发现容易引起矛盾,我现在也不会评分了,当然,别人的帮助会记住的,相信愿意参与技术的朋友也不会计较有没有评分
--------------------------------------------------------------
再客气的楼主也不可能把每个人的回复进行回复
--------------------------------------------------------------
坛子里有的人是很小气的,曾经看过一些帖子,有人先做出一个东西,又有人做了类似功能的东西来(没有抄袭),前者便跳了出来,在后者的帖子里指手画脚,这也是我现在不评分的原因之一

点评

不好意思 我程式功力不好 不知道是否 有誠品 寫入到MENU.LST 的 完整與法可以參考??  详情 回复 发表于 2021-2-14 22:55
回复

使用道具 举报

发表于 2021-2-14 22:55:07 | 显示全部楼层
yjqd 发表于 2019-6-11 12:45
谢谢你的建议

以前我从不评分,因为我也没详细了解评分的作用

不好意思 我程式功力不好  不知道是否 有誠品 寫入到MENU.LST 的 完整與法可以參考??
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-16 14:49

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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