无忧启动论坛

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

[已解决] 请教:关于G4D搜索文件的问题

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-11 21:41:55 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
想搜索硬盘上的.gho后缀的文件,由于功力有限,看C大的现成的QGHO的批处理看的一头雾水。不知有没有G4D的全盘搜索列出指定后缀名文件的简易的命令行或批处理。
请教各位大大如何简单实现(只要搜索两层子目录就满意了)。

[ 本帖最后由 mygamexxx 于 2011-8-12 17:26 编辑 ]
52#
 楼主| 发表于 2011-8-28 21:17:56 | 只看该作者

回复 #51 chenall 的帖子

原来是我不会用,问题解决。谢谢C大!!!

[ 本帖最后由 mygamexxx 于 2011-8-28 21:27 编辑 ]
回复

使用道具 举报

51#
发表于 2011-8-28 20:53:52 | 只看该作者

回复 #50 mygamexxx 的帖子

m.cmd       指定每个菜单要执行的命令  ( 必须的其它的都是可选参数.)
m.title        指定菜单标题
m.return    指定返回命令
m.menu     指定菜单位置(默认使用(md)0×210+16来存放菜单)
m.subdir    指定要查找的目录级数,默认1
m.devs      指定要查找的设备(find的参数)
m.init         指定菜单的初始化命令
m.ext         指定扩展名(用于过滤),多个扩展名用双引号每个扩展名之间用空格分隔
                 例: ext=".gho .txt"
m.root       指定根目录.(第一个被检查的目录)比如(hd0,4)/boot/或(hd0,5)
     注:该参数和m.devs参数配合使用时,将会只查找以上路径下的文件.例子:
     指定m.root=(hd0,4)/boot 或 /boot
     则,只会查找符合条件的磁盘/BOOT目录下的文件.
m.dirext     是否检测带扩展名的目录,设为任意值即启用,默认禁用,
                 除非有必要,否则不建议使用,启动这个参数会使得检测的速度变得很慢.
m.filpre   指定文件名前辍,过滤非以filpre参数开头的文件.(测试)
                 

加dirext参数试试,dirext=1
回复

使用道具 举报

50#
 楼主| 发表于 2011-8-28 20:25:56 | 只看该作者
c大,你的程序很好,但是无法搜索带点畸形目录下的.gho文件(比如cmd 下用md \back..\创建的目录),不知是否能支持。

[ 本帖最后由 mygamexxx 于 2011-8-28 20:27 编辑 ]
回复

使用道具 举报

49#
发表于 2011-8-23 20:44:21 | 只看该作者

回复 #48 mygamexxx 的帖子

只要加载了字体就会进入图形模式,(卸载字体后还是在图形模式下)

而VFONT只能在控制台下才可以使用.

你可以注意看一下界面上的显示就知道了,一般情况下图形模式显示的速度会比较慢.

解决办法很简单,如果你的菜单需要使用VFONT则在加载VFONT之前加一句
terminal console
回复

使用道具 举报

48#
 楼主| 发表于 2011-8-23 20:14:31 | 只看该作者
请教C大,grldr 的主菜单(比如menu.lst)调用一个批处理(比如1.bat)显示一个界面,该批处理使用的是VFONT显示中文,保存格式为ANSI。该批处理调用搜索文件的批处理(比如2.bat),搜索文件的批处理使用UNIFONT加载中文字体,返回主菜单时卸载,保存格式为UTF-8。搜索批处理返回的参数为返回主菜单使用configfile /menu.lst无法显示1.bat中设定的界面(可以确定加载了主菜单文件,只是无显示)。使用chainloader /grldr 可以显示1.bat中设定的界面。是什么原因?

[ 本帖最后由 mygamexxx 于 2011-8-23 20:19 编辑 ]
回复

使用道具 举报

47#
 楼主| 发表于 2011-8-23 15:18:44 | 只看该作者
原来UNIFONT下载的是旧版本,使用新版本正常。
回复

使用道具 举报

46#
发表于 2011-8-23 15:15:47 | 只看该作者
批处理保存编码是ansi格式吗?

我的字体文件是这里下载的http://bbs.wuyou.net/forum.php?mod=viewthread&tid=183722&extra=page%3D1

[ 本帖最后由 tingyue-wu 于 2011-8-23 15:17 编辑 ]
回复

使用道具 举报

45#
 楼主| 发表于 2011-8-23 15:06:34 | 只看该作者

回复 #44 tingyue-wu 的帖子

请发个你的UNIFONT 和FONTS,我试一下,难道我下载的有问题?
回复

使用道具 举报

44#
发表于 2011-8-23 14:53:29 | 只看该作者
我没改批处理文件 只是菜单里用了
unifont ()/BOOT/GRUB/FONTS

然后调用批处理 搜索出来的文件就是显示中文的
回复

使用道具 举报

43#
 楼主| 发表于 2011-8-23 13:51:03 | 只看该作者

回复 #42 tingyue-wu 的帖子

如何显示,我写入加载UNIFONT的句子,无法显示中文。
::自动生成菜单
set ?_n=1
set m.info=File list menu for grub4dos by chenall.\n\t\t for more information please visit

http://chenall.net
if exist m.init && echo %m.init% >> %m.menu%
echo /boot/grub/unifont /boot/grub/U16.bin >> %m.menu%
echo title %title% %m.title% %title%\n\n\t%m.info% >> %m.menu%
echo pause %m.info% >> %m.menu%
echo -e $[0106] %m.info%
echo $[0102] Please wait ...
echo $[1105] Working......
root %m.root%

没办法,只好用gfxmenu,能显示中文。
echo gfxmenu /boot/grub/message1 >> %m.menu%

[ 本帖最后由 mygamexxx 于 2011-8-23 13:53 编辑 ]
回复

使用道具 举报

42#
发表于 2011-8-23 11:47:26 | 只看该作者

回复 #39 mygamexxx 的帖子

可以显示中文的
回复

使用道具 举报

41#
发表于 2011-8-23 11:46:09 | 只看该作者
空的参数要么就不要写,要么就=""

这两个的效果的一样的,建议空的参数就不要加上去了。
回复

使用道具 举报

40#
发表于 2011-8-23 11:45:20 | 只看该作者
你可以试试加载UNIFONT字体看看能不能显示中文。理论上是可以的。
回复

使用道具 举报

39#
 楼主| 发表于 2011-8-23 09:50:19 | 只看该作者
自动生成的菜单是什么格式的,是否是UTF-8格式,如果要用UNIFONT显示搜索到的中文文件,应该怎么做。

[ 本帖最后由 mygamexxx 于 2011-8-23 10:46 编辑 ]
回复

使用道具 举报

38#
 楼主| 发表于 2011-8-23 09:21:18 | 只看该作者
谢谢,确实如此。接近完美。

[ 本帖最后由 mygamexxx 于 2011-8-23 09:25 编辑 ]
回复

使用道具 举报

37#
发表于 2011-8-23 09:13:46 | 只看该作者

回复 #36 mygamexxx 的帖子

filpre= ext=.gho 要写成filpre="" ext=.gho  参数空要用""才行 不然出错 之前我也遇到过
回复

使用道具 举报

36#
 楼主| 发表于 2011-8-23 08:37:50 | 只看该作者
使用正常,呵呵,只是有一个问题,filpre= ext=.gho参数找不到文件,是否应该设定为查找所有.gho文件。filpre=c ext=.gho可以找到文件名c开头的.gho文件。

[ 本帖最后由 mygamexxx 于 2011-8-23 08:58 编辑 ]
回复

使用道具 举报

35#
发表于 2011-8-22 20:30:24 | 只看该作者
支持更新 chenall真是勤快呀 十分感激 这是我们广大坛友的福音
回复

使用道具 举报

34#
发表于 2011-8-22 20:14:49 | 只看该作者
最后的更新....

[原创] GRUB4DOS 通用模块之文件选择模块[2011-08-22 更新]


2011-08-22 (最终版)
  • 优化了检测代码.
  • filpre支持子目录的检测.
回复

使用道具 举报

33#
发表于 2011-8-22 15:17:12 | 只看该作者
有需要的话下次再改一下.
回复

使用道具 举报

32#
发表于 2011-8-21 23:15:19 | 只看该作者
明白了 已经搞定  空的参数要"" 这个一直没注意 因为之前没有遇到过出错。学习了

另外我觉得filpre只支持单级目录的话 有点浪费
单级目录中出现同一个前缀的还是比较少的 关键是多级目录才容易被记错

所以建议filpre参数和subdir应该结合起来。


if exist m.filpre && set m.subdir=1改成if not exist m.filpre && set m.filpre="" 或删除

后发现可以检测多级目录了,但是路径也必须是 符合输入的前缀的 比如输入w 会列出以w开头的路径中w开头的文件,不是想要的效果(呵呵 不会改)

估计是还要改:生成文件列表 这个标签中的内容。

[ 本帖最后由 tingyue-wu 于 2011-8-22 08:55 编辑 ]
回复

使用道具 举报

31#
发表于 2011-8-21 21:43:18 | 只看该作者
注意看说明
1.前辍只支持单级目录。

2.前辍就是文件名的开头部份字符(ls /filepre),和扩展名没有关系。

3.空的参数必须是""否则会出错。例子filpre="",你不可以直接filpre= 这个语法是错误的。

4.前辍只支持一个,不像EXT参数一像支持多个。

比如你可以指定前辍ABC

则就会列出指定ROOT目录下以ABC开头的符合条件的文件。

这个前辍的功能实现了前面mygamexxx 所提到的功能

原帖由 mygamexxx 于 2011-8-17 09:38 发表
查找无扩展名的文件,比如当前根下查找文件名为ABC的文件,应如何设定参数?


使用新版就可以实现参数如下

ext=. filpre=ABC root=()/ cmd="echo %1"

查找当前根目录()/下以ABC开头的无扩展名的文件。


再次提醒:请注意新版cmd参数的变化.

[ 本帖最后由 chenall 于 2011-8-21 21:46 编辑 ]
回复

使用道具 举报

30#
发表于 2011-8-21 20:51:55 | 只看该作者

回复 #29 chenall 的帖子

filpre参数 和ext一样支持 多种前缀吗?用""和空格来表示?

这个前缀是点(.)前面的完整前缀,还是只要前缀中包含的一个符号或者首个符号就行?(经测试 原来就是首个字符)

经测试 换了新的批处理文件,什么文件也搜不到(有前缀参数但是不输入内容,即忽略),也不显示返回菜单,设置的标题也没有(还是显示默认的)

如果只输入前缀,忽略后缀,结果同上

如果输入前缀w  后缀.iso  只能找到分区根目录上的一个wuyou.iso  但是二级目录的wxrs.iso就找不到了。

[ 本帖最后由 tingyue-wu 于 2011-8-21 21:37 编辑 ]
回复

使用道具 举报

29#
发表于 2011-8-21 12:28:29 | 只看该作者
再次更新了一下.如果没有什么问题,代码将不再变动.

新的版本cmd参数变化比较大,需要注意.



2011-08-21 (变化比较大,请注意看更新说明,新的版本使用起来更加灵活.)
  • 菜单标题自动居中显示
  • cmd的语法改变
    旧的版本cmd=echo要改成如下.
    cmd="echo %1"
    在批处理中调用需要使用%%1
    即,需要多一个%1的参数,这个参数用于接收文件参数.可以放在cmd参数的任意位置.
    并且支持类拟%~dpnx1的格式.
  • 新增filpre参数,指定文件名前辍.
    注意:使用该参数时,subdir参数将不起作用,为了不影响其它情况下的检测速度,该参数只支持单级目录.
[原创] GRUB4DOS 通用模块之文件选择模块[2011-08-21 更新]
回复

使用道具 举报

28#
发表于 2011-8-21 11:09:25 | 只看该作者
直接改批处理当然也可以了,但是使用参数的更灵活.

你可以在你的菜单前面加上一些东西,再调用,这样最终的菜单就会有你想要的东西.

下午有时间的话会更新完善一下.
回复

使用道具 举报

27#
发表于 2011-8-21 10:23:59 | 只看该作者

回复 #26 chenall 的帖子

我直接修改批处理也可以吧
set m.menu=(md)0x210+16 && echo -e default 1\ndebug off > (md)0x210+16

set m.menu=(md)0x200+20 && echo -e default 1\ndebug off > (md)0x200+20

已改 可以

只是和我前面的一个写入内存的菜单(md)0x200+16混淆了。又改了回来,呵

[ 本帖最后由 tingyue-wu 于 2011-8-21 10:35 编辑 ]
回复

使用道具 举报

26#
发表于 2011-8-21 08:25:05 | 只看该作者
自动生成的菜单默认情况下只有16个扇区的空间,8KB.
超过的就被截断了.
解决办法,如果你的菜单数量比较多,可以自定义菜单.加上参数
menu=菜单文件的位置.

比如
menu=(fd0)/file.lst

注:菜单文件必须是已经存在的,并且有足够的空间,已经被初始化.因为是直接使用>>写入菜单的.

如果你想直接使用内存地址也可以类似这样(就有10KB了)
echo > (md)0x200+20
再指定menu=(md)0x200+20
回复

使用道具 举报

25#
发表于 2011-8-17 19:10:45 | 只看该作者

回复 #22 chenall 的帖子

又发现一个bug

我查找无扩展名文件,查到63个

然后发现上下方向键只能在1-62个菜单间切换 第63个无法选中,用左右方向键才能选中

另外设定的返回命令菜单也不显示了。

估计有两个可能1、保存菜单的内存不够导致显示不全 2、批处理问题,超出一屏或两屏就会不显示返回菜单
回复

使用道具 举报

24#
 楼主| 发表于 2011-8-17 15:21:16 | 只看该作者
我所说的是文件名中包含ABC的无扩展名文件,那就是目前无法实现,明白了。谢谢!!!相当于用通配符查找文件名中包含ABC的无扩展名文件的位置。
因为11楼的第3点:新的ext参数只查找无扩展名的文件.如下,会查找无扩展名的文件.
让我的理解产生问题,以为可以对无扩展名的指定文件名进行。应该是理解为会查找所有无扩展名的任意名称的文件,无法指定文件名。

[ 本帖最后由 mygamexxx 于 2011-8-17 15:27 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-2 23:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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