无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 6938|回复: 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:15:26 | 显示全部楼层
本帖最后由 527104427 于 2019-6-10 17:40 编辑

set p=
find /winpe.wim | call  :a

:a
if "%1"=="" exit
if /i "%1"=="(hd1,0)" set p=%1
shift 1
goto %0

点评

grub4dos 怎么变成了 bat ?!  发表于 2019-6-10 18:23
问一下,能否用于菜单中  详情 回复 发表于 2019-6-10 17:38
回复

使用道具 举报

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

问一下,能否用于菜单中

点评

貌似不行,也许是我不懂吧。  详情 回复 发表于 2019-6-10 17:41
回复

使用道具 举报

发表于 2019-6-10 17:41:30 | 显示全部楼层
yjqd 发表于 2019-6-10 17:38
问一下,能否用于菜单中

貌似不行,也许是我不懂吧。
回复

使用道具 举报

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

点评

哈哈哈哈  详情 回复 发表于 2019-6-10 19:11
热脸遇到冷屁股  发表于 2019-6-10 18:27
回复

使用道具 举报

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

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

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

点评

菜单中这样试试: set p= &; cat --length=0 (hd1,0)/winpe.wim && set p=(hd1,0)  详情 回复 发表于 2019-6-10 18:53
回复

使用道具 举报

发表于 2019-6-10 18:53:14 | 显示全部楼层
yjqd 发表于 2019-6-10 18:36
谢谢回复
你的菜单可行,若能更精简一些就好

菜单中这样试试:

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  详情 回复 发表于 2019-6-10 19:18
回复

使用道具 举报

发表于 2019-6-10 19:11:10 | 显示全部楼层

哈哈哈哈
回复

使用道具 举报

 楼主| 发表于 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:39
回复

使用道具 举报

发表于 2019-6-10 19:39:10 | 显示全部楼层
yjqd 发表于 2019-6-10 19:18
谢谢回复

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

这不是挺强的吗,没办法再简化了吧?

点评

好像存在一个问题,cat的--skip是为了跳过(hd0,0),如果(hd0,0)上不存在winpe.wim,cat就不能用--skip  详情 回复 发表于 2019-6-10 19:57
回复

使用道具 举报

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

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

点评

title 启动Windows8pe用wimboot set l=(md)0x60500+0x100 find /winpe.wim > %l% cat --locatei=(hd1 --number=1 %l% | set star_num= &; cat --locatei=) --number=1 --skip=%star_num% %l% | set end_num= &; s  详情 回复 发表于 2019-6-10 20:54
回复

使用道具 举报

发表于 2019-6-10 20:54:36 | 显示全部楼层
本帖最后由 527104427 于 2019-6-11 09:17 编辑
yjqd 发表于 2019-6-10 19:57
好像存在一个问题,cat的--skip是为了跳过(hd0,0),如果(hd0,0)上不存在winpe.wim,cat就不能用--skip


title 启动Windows8pe用wimboot
set l=(md)0x60500+0x100 &; find /winpe.wim > %l% &; cat --locatei=(hd1 --number=1 %l% | set star_num= &; cat --locatei=) --number=1 --skip=0x%star_num% %l% | set end_num= &; set /a len=0x%end_num%-0x%star_num%+1 > nul &; cat --skip=0x%star_num% --length=%len% %l% | set p=

点评

我把你的代码放在菜单里,结果报错:filename must …… echo %p%,显示结果不是分区号 我把 &; 去掉,并以它的位置换行写入菜单,结果仍然如上 你的代码该怎样加入菜单  详情 回复 发表于 2019-6-11 09:10
回复

使用道具 举报

 楼主| 发表于 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%,显示结果不是分区号

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

你的代码该怎样加入菜单

点评

什么版本的g4d?  详情 回复 发表于 2019-6-11 09:15
回复

使用道具 举报

发表于 2019-6-11 09:15:35 | 显示全部楼层
本帖最后由 527104427 于 2019-6-11 09:19 编辑
yjqd 发表于 2019-6-11 09:10
我把你的代码放在菜单里,结果报错:filename must ……
echo %p%,显示结果不是分区号


什么版本的g4d?

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

点评

谢谢,成功了,果然是前面的%star_num%少加了0x 你的代码实现了我的目的: U盘启动时(U盘只有1个分区),只要电脑硬盘哪个分区根目录有winpe.wim,就启动硬盘分区根目录的winpe.wim,而不启动U盘分区根目录的wi  详情 回复 发表于 2019-6-11 10:00
回复

使用道具 举报

 楼主| 发表于 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

点评

更精炼一点,可以 cat --locatei=(hd1 --number=1 %l% | set star_num=0x 这样后面的 %star_num% 就不用加 0x 了  详情 回复 发表于 2019-6-11 10:04
回复

使用道具 举报

发表于 2019-6-11 10:04:45 | 显示全部楼层
yjqd 发表于 2019-6-11 10:00
谢谢,成功了,果然是前面的%star_num%少加了0x

你的代码实现了我的目的:

更精炼一点,可以 cat --locatei=(hd1 --number=1 %l% | set star_num=0x
这样后面的 %star_num% 就不用加 0x 了

点评

谢谢 只是问一问,如果U盘有两个及以上分区,且里有都有winpe.wim,不知你的代码能否排除U盘的分区,当然,实际情况我也只分一个区,分太多分区且都有winpe.wim也没意思 如果GRUB4DOS能根据设备类型排除U盘就  详情 回复 发表于 2019-6-11 10:25
回复

使用道具 举报

 楼主| 发表于 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类型

点评

仔细看一下代码应该能够理解吧,所有hd1以外的分区都忽略,只需要hd1的第一个分区,而不管hd1有多少分区。 如果U盘是一启,应该都是hd0。被认作fd0的情况很少见了吧,可以忽略了。  详情 回复 发表于 2019-6-11 10:52
回复

使用道具 举报

发表于 2019-6-11 10:52:35 | 显示全部楼层
本帖最后由 527104427 于 2019-6-11 10:55 编辑
yjqd 发表于 2019-6-11 10:25
谢谢

只是问一问,如果U盘有两个及以上分区,且里有都有winpe.wim,不知你的代码能否排除U盘的分区, ...


仔细看一下代码应该能够理解吧,所有hd1以外的分区都忽略,只需要hd1的第一个分区,而不管hd1有多少分区。

如果U盘是一启,应该都是hd0。被认作fd0的情况很少见了吧,可以忽略了。

不知道有没有判断设备类型的代码,我印象中没有。

点评

哦,明白了,U盘不管有多少分区都是hd0(如果U盘是一启) 不好意思,我看代码和写代码水平很吃力  详情 回复 发表于 2019-6-11 11:37
回复

使用道具 举报

 楼主| 发表于 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:10
回复

使用道具 举报

 楼主| 发表于 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, 2024-3-29 15:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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