无忧启动论坛

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

omnifs引擎,列出所有分区根目录、一级、二级子目录中特定文件

[复制链接]
跳转到指定楼层
1#
发表于 2011-9-29 14:30:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
omnifs引擎,列出所有分区根目录和一级二级子目录中特定文件,需要类似功能的兄弟可以拿去自行 修剪。
omnifs 引擎,就是要支持ntfs分区的文件搜索。

用法" dp0 文件类型扩展名 "
如果省略扩展名参数,将默认 gho 。
脚本可以同时附带多个扩展名参数来同时搜索多个类型的文件。比如:dp0 gho ghs txt log ini  表示搜索整个硬盘序列中的全部硬盘分区的根目录和一级子目录中的gho/ghs/txt/log/ini 五种类型的文件。
最后将结果传递给 list.txt 通过 wbat 建立窗口供用户选择。并将用户选择的文件复制给环境变量 file

做到根目录和一级子目录搜索已经很费力气了,omnifs 运行一次都要耗费时间。

script.7z (1.09 KB, 下载次数: 265)   核心脚本 一个bat和一个awk  
tools.7z (39.37 KB, 下载次数: 233) 所需辅助工具 awk /wbat等
另外需要 omnifs 11 ,体积 比较大,大家自己找吧。

2011.09.29-17:00 再次更新。
1、搜索范围扩展到二级子目录
2、针对文件和文件名中有空格的情况进行了修正
3、针对文件路径过长wbat的list 指令无法显示等问题进行了修正

[ 本帖最后由 dos时代菜鸟 于 2011-9-29 17:49 编辑 ]
38#
 楼主| 发表于 2013-2-28 11:15:03 | 只看该作者
原帖由 asqw101451 于 2013-2-26 23:51 发表
记得原来Deepin xusen的Dos工具箱不错,楼主研究下


呵呵,哈哈。。。
回复

使用道具 举报

37#
发表于 2013-2-26 23:51:46 | 只看该作者
记得原来Deepin xusen的Dos工具箱不错,楼主研究下
回复

使用道具 举报

36#
 楼主| 发表于 2012-12-27 21:09:26 | 只看该作者
omnifs 搜索 只针对 硬盘进行操作。
dir 常规搜索可以进行光盘搜索但, 在运行前需要先做 光驱驱动 。
回复

使用道具 举报

35#
发表于 2012-12-27 17:32:29 | 只看该作者

[求助] 请“dos时代菜鸟”进~~~,反映测试版的问题

您的作品,DOS时代菜鸟工具箱,最新测试版的GHOST搜索恢复中的“f.OMNIFS 引擎”和“e.DIR 常规引擎”在U盘中运行时非常好,但这个软件如果集成在光盘中,GHOST搜索恢复中的“f.OMNIFS 引擎”和“e.DIR 常规引擎”无法正常运行。请您百忙中抽空看一下。我的QQ号465320504(龙的传人)。
回复

使用道具 举报

34#
 楼主| 发表于 2012-10-10 21:13:11 | 只看该作者
你这段 代码 并不能说明什么。

要想 去掉 变量中的 引号 ,需要修改  awk 脚本。

而且 ,既然 确定 gho 在 1.1 中,就 自己编写 只针对  1.1 的 搜索脚本,应该 比这个 搜索全部硬盘分区 的 更快。
建议 研究 一下 awk 脚本,其实很简单,估计你 10分钟就能看懂,20分钟就能修改成自己要的 东西了。

[ 本帖最后由 dos时代菜鸟 于 2012-10-10 21:16 编辑 ]
回复

使用道具 举报

33#
发表于 2012-10-10 13:51:03 | 只看该作者
菜鸟大大,代码
@echo off
ECHO 

:g0
call dp0.bat %gho%
if %gho_%*==* goto error2

:g2
cls
if exist list2.txt del list2.txt
echo :ghost  " 确认修复参数 "[x] >list2.txt
echo ===========================================>>list2.txt
echo   系统镜像:[$gho_,50,U!                 ]  >>list2.txt
echo ===========================================>>list2.txt
call w.bat box @list2.txt:ghost #4
if errorlevel 100 goto error3
if "%?%"=="4" goto zh
if "%?%"=="3" goto 3
if "%?%"=="2" goto 2
if "%?%"=="1" goto 1
goto end

:zh
ghost.exe -forceusb -clone,mode=load,src=3:1\\%GHO_%,dst=2 -fx -quiet -sure
goto down
回复

使用道具 举报

32#
 楼主| 发表于 2012-9-28 19:21:30 | 只看该作者
原帖由 fanzhuo 于 2012-9-22 16:12 发表
菜鸟大大,我是修改了你的xghost.img,我用于硬盘恢复,不是分区,所以我把你镜像里取值的前面给去掉了,例如:1.1:\xxx.gho我只留了xxx.gho,在ghost恢复的批处理里面我指定了路径,在恢复的时候ghost报错,我 ...


老兄,放上你的代码,才好分析 修改啊。
回复

使用道具 举报

31#
发表于 2012-9-22 16:12:02 | 只看该作者
菜鸟大大,我是修改了你的xghost.img,我用于硬盘恢复,不是分区,所以我把你镜像里取值的前面给去掉了,例如:1.1:\xxx.gho我只留了xxx.gho,在ghost恢复的批处理里面我指定了路径,在恢复的时候ghost报错,我看了报错信息,变量取出来没问题,报错信息上显示的是xxx.gho,就是路径有问题,在xxx.gho前面老是有个双引号,怎么去掉?
如果我把变量取成\xxx.gho就正常,但是显示的时候有个斜杠就不好看,麻烦大侠指点
回复

使用道具 举报

30#
发表于 2011-10-21 08:05:47 | 只看该作者
原帖由 dos时代菜鸟 于 2011-10-20 23:03 发表


dp0.bat 第46行 代码:
awk '{if (FNR==(%?%+1)) {printf "set file=";printf "%%c",34;printf $0;printf "%%c",34;print ""}}' list.txt >file.bat
改为:
awk '{if (FNR==(%?%+1)) {printf "set file= ...


谢谢大大指点,成功!
回复

使用道具 举报

29#
 楼主| 发表于 2011-10-20 23:03:36 | 只看该作者
原帖由 2011pzn 于 2011-10-20 19:32 发表
dos时代菜鸟大大,貌似搜索出来的镜像源后面少了":1",像这样:"1.3:\sysbak\sysbak.gho",导致ghost恢复时会报错。我手工改成"1.3:\sysbak\sysbak.gho:1"能正常恢复。

请教大大,这个问题怎么解决呀?


dp0.bat 第46行 代码:
awk '{if (FNR==(%?%+1)) {printf "set file=";printf "%%c",34;printf $0;printf "%%c",34;print ""}}' list.txt >file.bat
改为:
awk '{if (FNR==(%?%+1)) {printf "set file=";printf "%%c",34;printf $0":1";printf "%%c",34;print ""}}' list.txt >file.bat

看看
回复

使用道具 举报

28#
发表于 2011-10-20 20:45:55 | 只看该作者
原帖由 2011pzn 于 2011-10-20 19:32 发表
dos时代菜鸟大大,貌似搜索出来的镜像源后面少了":1",像这样:"1.3:\sysbak\sysbak.gho",导致ghost恢复时会报错。我手工改成"1.3:\sysbak\sysbak.gho:1"能正常恢复。

请教大大,这个问题怎么解决呀?

楼上的兄弟,这个批处理怎么用呢?能不能指教一下?
回复

使用道具 举报

27#
发表于 2011-10-20 19:32:55 | 只看该作者
dos时代菜鸟大大,貌似搜索出来的镜像源后面少了":1",像这样:"1.3:\sysbak\sysbak.gho",导致ghost恢复时会报错。我手工改成"1.3:\sysbak\sysbak.gho:1"能正常恢复。

请教大大,这个问题怎么解决呀?
回复

使用道具 举报

26#
 楼主| 发表于 2011-10-17 15:25:58 | 只看该作者

回复 #25 bbsphixy 的帖子

这确实是个问题,情况较少见,但要是遇到硬盘有问题的情况,同样会出现问题。

另编辑一个 omn0.bat 用于搜索所有硬盘分区 根下指定目录下的特定类型文件。
用法:
omn0.bat "windows\system32" dll
表示搜索所有硬盘分区根下的 windows\system32 文件夹中的dll文件。

文件夹层数决定了调用 omnifs 的次数。

[ 本帖最后由 dos时代菜鸟 于 2011-10-17 22:29 编辑 ]

OMN0.7z

1.03 KB, 下载次数: 50, 下载积分: 无忧币 -2

回复

使用道具 举报

25#
发表于 2011-10-17 12:37:39 | 只看该作者
虽说如此,我在考虑,当磁盘中有未格式化的分区时,(会不会考虑太多了)
omnifs也会罗列出来,
当omnifs dir 时,出错停止执行下条语句。
回复

使用道具 举报

24#
 楼主| 发表于 2011-10-17 08:22:48 | 只看该作者

回复 #23 bbsphixy 的帖子

你可以 先编辑omnifs 脚本1 如下内容:
dir 1.1:\
dir 1.2:\
dir 2.2:\
dir 2.1:\
再通过 omnifs调用上面的脚本1,并用 awk 分析运行结果,找出包含 moot 目录的分区,并由awk 生成 dir 该分区 moot 的omnifs 脚本2。 这里需要考虑有多个分区包含mooot目录。再通过  omnifs 调用 脚本2,以此类推,直至目标。

同样道理,脚本1 也可以通过 awk 分析 omnifs info 的运行结果而生成。这才能实现完全自动化,及算下来,运行三次 omnifs 就可以了,不然每个分区都要运行一次 omnifs 会很耽误时间,如果目标计算机有2个硬盘每个硬盘有5个分区,那你就要运行10次omnifs !再加上 omnifs info 这一次,时间上简直就是煎熬。

[ 本帖最后由 dos时代菜鸟 于 2011-10-17 08:34 编辑 ]
回复

使用道具 举报

23#
发表于 2011-10-16 22:02:38 | 只看该作者
有一个缺点!使用omnifs脚本执行dir的话,会出错!
dir 1.1:\moot
dir 2.1:\moot
当第一条命令查找不到moot(不存在此目录时)就失败!就不能继续执行下一条命令...
请注意此问题!!!
看来还是得使用BAT的方式执行。

另一个问题:
1.1 变成 1:1  
我采用awk的字符串截取substr函数 来完成替换!!!!!

在此感谢你的help/支持!

[ 本帖最后由 bbsphixy 于 2011-10-17 00:16 编辑 ]
回复

使用道具 举报

22#
发表于 2011-10-16 21:15:23 | 只看该作者
原帖由 dos时代菜鸟 于 2011-10-16 21:09 发表


欧!原来如此!多谢。。..

[ 本帖最后由 bbsphixy 于 2011-10-17 00:11 编辑 ]
回复

使用道具 举报

21#
 楼主| 发表于 2011-10-16 21:09:50 | 只看该作者

回复 #20 bbsphixy 的帖子

不行,时间上会慢很多,虽然结果一样,但,bat 中 omnifs 每运行一个命令都会重新把 omnifs 调入内存重新装载内置驱动,很费时间,而要是用 omnifs script 调用脚本,只需要一次装载,就能执行多条命令。这也是为什么 omnifs 提供脚本功能的原因。
回复

使用道具 举报

20#
发表于 2011-10-16 20:29:01 | 只看该作者
我想到了,何不把它dp1.omn 变成dp1.bat呢!!!

这样上面 图片上的不就可以使用if..之类的判断了!

可免使用omnifs script语句

效果相同!

接下来就是如何使1.1变1:1


[ 本帖最后由 bbsphixy 于 2011-10-16 20:38 编辑 ]
回复

使用道具 举报

19#
发表于 2011-10-16 19:55:01 | 只看该作者
偶!了解!dp1.omn 是omnifs执行脚本...
omnifs调用脚本,等于将多行omnifs命令顺序调用!

我也刚想到了!
omnifs dir moot\sy 罗列里面的文件,然后再作判断之类的...
看来还得再看看AWK

[ 本帖最后由 bbsphixy 于 2011-10-16 20:00 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2011-10-16 19:48:35 | 只看该作者

回复 #17 bbsphixy 的帖子

看来你还没有理解 omnifs 脚本的意思,而且也没有熟悉 omnifs 命令的特点。
首先 dp1.omn 中不用 再写 "omnifs" 只需要 写入omnifs 的命令,因为dp1.omn 中的命令只能由omnifs调用, 比如: dir 1.1:\moot\sy
其次 dp1.omn 中既然都是 omnifs 的命令, 那么 if ...和 > 之类的 dos命令是无效的,
最后,omnifs 的 dir 命令只能罗列文件夹的内容。

omnifs 的脚本调用 方法也需要明白。

不要着急,告诉你了,必须研究 awk 和 omnifs 的脚本,必须一步一步研究。要想一下子断章取义的摘抄肯定是不行的。

你先做下面的两个操作:
1、编辑 dp1.omn 的内容如下:
  dir 1.1:\moot\sy
  dir 1.2:\moot\sy
  dir 2.1:\moot\sy
  dir 2.2:\moot\sy
2、运行下面的命令:看看效果
  omnifs script dp1.omn
然后你就明白了。
其实结果是很乱的,需要用 awk 这类文本流软件对结果进行整理的。


关于把 1.2: 变成 1:2 这类的操作,用 awk 可以做到,用 xset /change 也可以做到。

[ 本帖最后由 dos时代菜鸟 于 2011-10-16 19:59 编辑 ]
回复

使用道具 举报

17#
发表于 2011-10-16 19:24:05 | 只看该作者
嗯,你的方法不错!学习了。
我变化了下:



还有个问题:
如何将 1.1:   1.2:  ... 变成1:1   1:2  ...
实现ghost中的 src=1:1,dst=1:2\moot\xp.gho ...

[ 本帖最后由 bbsphixy 于 2011-10-16 19:49 编辑 ]
回复

使用道具 举报

16#
 楼主| 发表于 2011-10-16 14:18:50 | 只看该作者

回复 #15 bbsphixy 的帖子

当然支持多硬盘。
这里你必须明白 omnifs /script 的用法。还有 awk 的功能和用法。
回复

使用道具 举报

15#
发表于 2011-10-16 13:20:18 | 只看该作者
不错!!!
对了,支持对【多硬盘】操作吗?

我想我明白了,使用/info 列出来保存到文件.txt 再去搜索!

[ 本帖最后由 bbsphixy 于 2011-10-16 13:26 编辑 ]
回复

使用道具 举报

14#
发表于 2011-10-2 10:52:51 | 只看该作者
好东西,感谢楼主分享
回复

使用道具 举报

13#
发表于 2011-10-2 02:40:19 | 只看该作者
原帖由 dos时代菜鸟 于 2011-9-30 20:40 发表
要是 omnifs 能够格式化 的话 ,ghost 就不会出gdisk 了。
我以前写过一个 用 gdisk 格式化fat32 和 ntfs 格式分区的脚本,已经改进并收入 “我的dos工具箱” 中


恩,我去学习下,多谢了。
回复

使用道具 举报

12#
 楼主| 发表于 2011-9-30 20:40:29 | 只看该作者

回复 #11 Plantsoot 的帖子

要是 omnifs 能够格式化 的话 ,ghost 就不会出gdisk 了。
我以前写过一个 用 gdisk 格式化fat32 和 ntfs 格式分区的脚本,已经改进并收入 “我的dos工具箱” 中
回复

使用道具 举报

11#
发表于 2011-9-30 18:57:40 | 只看该作者
有办法借助omnifs 来格式化EISA分区吗?
回复

使用道具 举报

10#
 楼主| 发表于 2011-9-30 11:24:14 | 只看该作者
对于 omnifs 来说分区是fat 还是 ntfs 因该都用一个内核进行处理。
如果 fat 分区能支持的 ntfs 分区一样也应该支持。

我以前用 ghost  就发现不支持中文,后来在 config.sys 中通过 country.sys 设置了代码页,就可以了。虽然中文文件夹是乱码,但总算看上去是规整的方格码,说明确实有效。

1#脚本,就是在我的dos工具箱 环境下测试的,没有问题。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 02:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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