无忧启动论坛

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

[求助] 關於~grub4dos menu.lst 裡的 title 如何以變量代入

[复制链接]
跳转到指定楼层
1#
发表于 2013-5-15 13:29:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lfu0327 于 2013-5-15 13:57 编辑

若menu裡的某引導、想要顯示出的文字如下:

title     【W8】啟動 20130515 V0.09 W8
acpi   
fallback 1   
root (hd0,0)
hide (hd0,1)
chainloader /bootmgr


title     【Xp】啟動 20130515 V0.09 XP
rootnoverify (hd0,1)
hide (hd0,0)  
chainloader +1

===========可否各別代入文件為w8.txt \ xp.txt ===========
成為如下

title      %W8%   ----> 讀取w8.TXT 裡的 w8ver:【W8】啟動 20130515 V0.09 W8  
acpi   
fallback 1   
root (hd0,0)
hide (hd0,1)
chainloader /bootmgr


title      %XP%   ----> 讀取XP.TXT 裡的 XPver:【Xp】啟動 20130515 V0.09 XP  
rootnoverify (hd0,1)
hide (hd0,0)  
chainloader +1


2#
 楼主| 发表于 2013-5-15 13:38:33 | 只看该作者
初始想法是用:

find (0:0) \w8.txt w8ver: > %w8%

然後把 %w8% 代入 title 裡,可是因為批次命令上的不熟悉,與其他觀念的不完善~

導致無法完善這個:可以用來『版本控制』的想法

只好上來請教~求救~煩請各位大師~指點迷律啊~><"
回复

使用道具 举报

3#
发表于 2013-5-15 15:16:49 | 只看该作者
你这里设置变量有什么用处呢?
set W8=20130515 V0.09
set XP=20130515 V0.09
title   【W8】啟動 %W8% W8
-------------------------
建议按上面方法批处理动态生成menu.lst
回复

使用道具 举报

4#
 楼主| 发表于 2013-5-15 16:09:44 | 只看该作者
menu.lst 裡面通常 調整了一些位置、顏色、選單內容

通常搞pc的都很晚睡=.="~有時一給他不小心~就改錯行~又要重看~

那把這些『簡單的字句』與『更新版號』放到另一個txt,直接改txt~不用再動到menu.lst

一、單純化、並減少不必要的手殘發生...
二、可以量產,針對不太上手grub的人~只要在外部放上圖片,更改txt的文字內容、就可以達到選單個人化

雖然有點麻煩~"~
回复

使用道具 举报

5#
发表于 2013-5-15 16:14:12 | 只看该作者
传个具体的w8.txt或者xp.txt样本上来  要不不好说怎么写脚本获取里面的内容
回复

使用道具 举报

6#
 楼主| 发表于 2013-5-15 16:14:36 | 只看该作者
本帖最后由 lfu0327 于 2013-5-15 16:16 编辑
zhaohj 发表于 2013-5-15 15:16
你这里设置变量有什么用处呢?
set W8=20130515 V0.09
set XP=20130515 V0.09


這樣還是在同一個menu.lst 上

我是想把 w8 的 更新說明 與 版號 獨立出來一個 w8.TXT
並由這個 w8.txt 來提供 變量內容 如 %W8%

再由 menu.lst 讀取並顯示出來

~"~



批处理动态生成menu.lst

恕小弟孤陋寡聞....這該如何生成呢?
回复

使用道具 举报

7#
 楼主| 发表于 2013-5-15 16:18:27 | 只看该作者
sratlf 发表于 2013-5-15 16:14
传个具体的w8.txt或者xp.txt样本上来  要不不好说怎么写脚本获取里面的内容

好~馬上放上來~感謝您~
回复

使用道具 举报

8#
 楼主| 发表于 2013-5-15 16:26:12 | 只看该作者
本帖最后由 lfu0327 于 2013-5-15 16:32 编辑

timeout
default
graphicsmode -1 1024
splashimage (hd0,4)/grub/LOGO.lzma
font (hd0,4)/grub/unifont.hex
terminal --font-spacing=0:10

title 【 自動載入版號與更新測試 】\n 歡迎使用,請選擇以下使用項目:

clear
title======================================================================
clear

title  %W8update% && %W8ver%
acpi   
fallback 1   
root (hd0,0)
hide (hd0,1)
chainloader /bootmgr


title  %XPupdate% && %XPver%
rootnoverify (hd0,1)
hide (hd0,0)  
chainloader +1  

title======================================================================
clear

title

title   【從硬碟啟動】\n 從硬碟啟動
checkrange 0x80 read 0x8280 && map (hd1) (hd0)
checkrange 0x80 read 0x8280 && map --hook
chainloader (hd0)+1

title   【重新啟動】\n 重新啟動
reboot

title   【關機】\n 關機
halt

menu.7z (1.39 KB, 下载次数: 7)



=====================以下為utf8格式的w8.txt===================================
W8update: "本次更新 W8 最新補丁至20130515日"
W8ver: "20130515_Ver0.92"


w8.7z (479 Bytes, 下载次数: 4)





=====================以下為utf8格式的XP.txt===================================
XPupdate: "本次更新 XP 最新補丁至20130515日"
XPver: "20130515_Ver0.92"


xp.7z (479 Bytes, 下载次数: 3)
回复

使用道具 举报

9#
发表于 2013-5-15 17:20:24 | 只看该作者
看得头有点晕……
还是闪人吧……
回复

使用道具 举报

10#
发表于 2013-5-15 17:22:43 | 只看该作者
文件名对应可以直接用ls 。。。。 | set p=
另外写一个txt,还不如直接改menu.lst呢
回复

使用道具 举报

11#
 楼主| 发表于 2013-5-15 17:26:53 | 只看该作者
2011895866818 发表于 2013-5-15 17:22
文件名对应可以直接用ls 。。。。 | set p=
另外写一个txt,还不如直接改menu.lst呢

menu.lst 裡面通常 調整了一些位置、顏色、選單內容

通常搞pc的都很晚睡=.="~有時一給他不小心~就改錯行~又要重看~

那把這些『簡單的字句』與『更新版號』放到另一個txt,直接改txt~不用再動到menu.lst

一、單純化、並減少不必要的手殘發生...
二、可以量產,針對不太上手grub的人~只要在外部放上圖片,更改txt的文字內容、就可以達到選單個人化
回复

使用道具 举报

12#
发表于 2013-5-15 23:04:49 | 只看该作者
本帖最后由 sratlf 于 2013-5-16 08:15 编辑
lfu0327 发表于 2013-5-15 16:26
timeout
default
graphicsmode -1 1024


搞定了  试了下应该能实现你的要求  压缩包里的文件假定都放在启动盘/boot/grub/目录下

menu.lst是菜单文件  在头部有添加 /boot/grub/getupdate W8 XP 一行命令  调用脚本获取值

getupdate为脚本  需指定txt文件名  比如指定w8参数  就将在getupdate所在目录下找w8.txt文件  找到后获取W8update和W8ver两个变量值  

指定XP参数  就将找XP.TXT文件  获取XPupdate和XPver两个变量值

示例截图



getupdate.zip (2.93 KB, 下载次数: 3)
  1. !BAT by sratlf@wuyou 0515

  2. call Fn.15 "%debug%" "" && debug %debug%

  3. :start
  4. call Fn.15 "%~1" "" || exit
  5. cat --length=0 %~dp0%~1.TXT > nul || goto :error
  6. cat %~dp0%~1.TXT > (md)0x200+10
  7. call :get_value %~1 update ver || goto :error_2
  8. goto :next

  9. :get_value
  10. set tmp=
  11. cat --locatei="%~1%~2" --number=1 (md)0x200+10 > nul || exit 1
  12. cat --skip=%?% --locate=" --number=1 (md)0x200+10 > nul || exit 1
  13. set /A tmp=%?% + 1 > nul
  14. cat --skip=%tmp% --locate=" --number=1 (md)0x200+10 > nul || exit 1
  15. calc %?% - %tmp% > nul
  16. cat --skip=%tmp% --length=%@retval% (md)0x200+10 | set %~1%~2=
  17. call Fn.15 "%~3" "" && shift 2 && goto :get_value
  18. set tmp=
  19. exit

  20. :error_2
  21. echo File %~1.TXT format error.
  22. goto :next
  23. :error
  24. echo File %~dp0%~1.TXT does not exist X_X
  25. :next
  26. call Fn.15 "%~2" "" && shift 1 ! exit
  27. goto :start

复制代码
回复

使用道具 举报

13#
 楼主| 发表于 2013-5-15 23:07:58 | 只看该作者
sratlf 发表于 2013-5-15 23:04
搞定了  试了下应该能实现你的要求  压缩包里的文件假定都放在启动盘/boot/grub/目录下

menu.lst是菜 ...

太感謝您了~有s大真好啊><"
回复

使用道具 举报

14#
 楼主| 发表于 2013-5-16 07:38:37 | 只看该作者
sratlf 发表于 2013-5-15 23:04
搞定了  试了下应该能实现你的要求  压缩包里的文件假定都放在启动盘/boot/grub/目录下

menu.lst是菜 ...

S大~如果我要自行再新增第三種變量,我應該如何追加呢?
回复

使用道具 举报

15#
发表于 2013-5-16 08:10:28 | 只看该作者
本帖最后由 sratlf 于 2013-5-16 08:14 编辑
lfu0327 发表于 2013-5-16 07:38
S大~如果我要自行再新增第三種變量,我應該如何追加呢?


修改#12第九行命令
  1. call :get_value %~1 update ver || goto :error_2
复制代码
假定第三个参数为XXX  那就改成下面的样子
  1. call :get_value %~1 update ver XXX || goto :error_2
复制代码
回复

使用道具 举报

16#
 楼主| 发表于 2013-5-16 09:02:12 | 只看该作者
sratlf 发表于 2013-5-16 08:10
修改#12第九行命令假定第三个参数为XXX  那就改成下面的样子

了解了~
那如果我 已經有了 w8.txt / xp.txt /
我想再加一個 w7.txt
是不是在menu.lst  
在头部有添加 /boot/grub/getupdate W8 XP W7
這樣對嗎?
回复

使用道具 举报

17#
发表于 2013-5-16 09:04:53 | 只看该作者
lfu0327 发表于 2013-5-16 09:02
了解了~
那如果我 已經有了 w8.txt / xp.txt /
我想再加一個 w7.txt

恩  没错  格式一样的话只需要加个参数就行了
回复

使用道具 举报

18#
 楼主| 发表于 2013-5-16 10:48:19 | 只看该作者
sratlf 发表于 2013-5-16 09:04
恩  没错  格式一样的话只需要加个参数就行了

太感謝您了~><"
回复

使用道具 举报

19#
 楼主| 发表于 2013-5-24 01:49:08 | 只看该作者
本帖最后由 lfu0327 于 2013-5-24 09:49 编辑
sratlf 发表于 2013-5-16 09:04
恩  没错  格式一样的话只需要加个参数就行了


S大,我看了您的文章裡有 一個 二個日期相減 如
20130524 20130530  相差 6天 這樣的範例:

如果我想延申應用

在我的w8.TXT 裡加入一行

uM_Day0:"20140524"  // 此數值手動輸入 表示 預定日期
uM_Day1:"20130524"  // 此數值由grub獲取 表示 系統  今日日期
uM_Day2:"365"  // 此數值 由 預定日期 減去  系統  今日日期  表示 相差幾日 寫入 w8.TXT 用以getupdate 進行調用顯示 在 menu.LST 上


若相減日期 等於限定數時,則執行

相減日期等於7日,則進行
boot/grub/BakTime.bat

這樣可以透由這個功能,結合時間,來達到
系統備份一次~~~這真是太方便了><"~





回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 04:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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