无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: 青青草
打印 上一主题 下一主题

[求助] 关于grub2的两个问题【问题已解决】

[复制链接]
31#
 楼主| 发表于 2020-4-17 15:27:00 | 只看该作者
本帖最后由 青青草 于 2020-4-17 18:56 编辑
wintoflash 发表于 2020-4-10 10:48
for file in ($device)/WIM/X64/*; do                  
        if [ -f "${file}" ]; then                    ...

W大,你好!
再次请教一下:
               
                 for file in (${device})/X64/*; do                    
                      test -f ${file};                  
                   regexp -s filename ".*/(.*)" "${file}"
                   regexp -s ext_name '.*\.(.*)' "${file}"
                   regexp --set=name '^.*\/(.*)\..*$' "${file}";      
                        if regexp '^[wW][iI][mM]$' "${ext_name}"; then                    
                      funcGetSequence;  
                            menuentry "启动 ${name} (${device})" "${device}" "${filename}" {
                              set root=$2;
                              set filename_this=$3
                              loopback wimboot (memdisk)/boot/grub/wimboot.gz
                              wimboot @:boot.wim:(${root})/X64/${filename_this} @:bootmgfw.efi:(wimboot)/bootmgfw.efi @:bcd:(wimboot)/bcd               @:boot.sdi:(wimboot)/boot.sdi
                      }
              ... ...
        该代码,不管WIM文件名是否含有空格,均可以找到。
对于文件名不含空格的WIM文件,可以显示,也可以启动。
对文件名含空格的WIM文件,可以显示,但启动时却显示:错误的文件(bad file)。
该如何修改代码,以解决此问题?
谢谢了!
已经解决了,无需解答。


回复

使用道具 举报

32#
发表于 2020-4-17 15:34:32 | 只看该作者
一直好奇这个mane是啥

点评

打错了,是name  详情 回复 发表于 2020-4-17 15:41
回复

使用道具 举报

33#
 楼主| 发表于 2020-4-17 15:41:58 | 只看该作者
江南一根葱 发表于 2020-4-17 15:34
一直好奇这个mane是啥

打错了,是name
回复

使用道具 举报

34#
发表于 2020-4-17 18:58:20 | 只看该作者
青青草 发表于 2020-4-17 15:27
W大,你好!
再次请教一下:
               

注意加引号 或者 反斜杠转义。
wimboot @:boot.wim:(hd0,1)/abcd/test.wim
wimboot @:boot.wim:(hd0,1)/abcd/filename\ space.wim
wimboot "@:boot.wim:(hd0,1)/abcd/filename space.wim"

点评

谢谢!问题已解决。  详情 回复 发表于 2020-4-17 21:28
回复

使用道具 举报

35#
发表于 2020-4-17 19:32:05 | 只看该作者
对正则表达式不是很懂,你看能不这样:
例如:(hd1.msdos2)/a/b/c/d/a b c.wim
能不能用正则获取文件名a b c到一个变量filename,再把这个变量的空格替换成\,
前边的路径获取变量filepath,
扩展名ext_name变量,
然后组合成文件名在启动呢?

点评

改成这样就可以了: for file in (${device})/X64/*; do test -f ${file}; regexp -s filename ".*/(.*)" "${  详情 回复 发表于 2020-4-17 21:25
回复

使用道具 举报

36#
 楼主| 发表于 2020-4-17 21:25:32 | 只看该作者
my9823 发表于 2020-4-17 19:32
对正则表达式不是很懂,你看能不这样:
例如:(hd1.msdos2)/a/b/c/d/a b c.wim
能不能用正则获取文件名 ...

改成这样就可以了:
                for file in (${device})/X64/*; do                    
                      test -f ${file};                  
                   regexp -s filename ".*/(.*)" "${file}"
                   regexp -s ext_name '.*\.(.*)' "${file}"
                   regexp --set=name '^.*\/(.*)\..*$' "${file}";      
                        if regexp '^[wW][iI][mM]$' "${ext_name}"; then                    
                      funcGetSequence;  
                            menuentry "启动 ${name} (${device})" "${device}" "${filename}" {
                              set root=$2;
                              set filename_this="$3"
                              loopback wimboot (memdisk)/boot/grub/wimboot.gz
                              wimboot @:boot.wim:(${root})/X64/"${filename_this}" @:bootmgfw.efi:(wimboot)/bootmgfw.efi @:bcd:(wimboot)/bcd               @:boot.sdi:(wimboot)/boot.sdi
                      }
              ... ...
回复

使用道具 举报

37#
 楼主| 发表于 2020-4-17 21:28:31 | 只看该作者
wintoflash 发表于 2020-4-17 18:58
注意加引号 或者 反斜杠转义。
wimboot @:boot.wim:(hd0,1)/abcd/test.wim
wimboot @:boot.wim:(hd0,1) ...

谢谢!问题已解决。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-25 15:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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