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 '^$' "${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)。
该如何修改代码,以解决此问题?
谢谢了!
已经解决了,无需解答。
一直好奇这个mane是啥 江南一根葱 发表于 2020-4-17 15:34
一直好奇这个mane是啥
打错了,是name 青青草 发表于 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"
对正则表达式不是很懂,你看能不这样:
例如:(hd1.msdos2)/a/b/c/d/a b c.wim
能不能用正则获取文件名a b c到一个变量filename,再把这个变量的空格替换成\,
前边的路径获取变量filepath,
扩展名ext_name变量,
然后组合成文件名在启动呢? 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 '^$' "${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
}
... ... wintoflash 发表于 2020-4-17 18:58
注意加引号 或者 反斜杠转义。
wimboot @:boot.wim:(hd0,1)/abcd/test.wim
wimboot @:boot.wim:(hd0,1) ...
谢谢!问题已解决。
页:
1
[2]