无忧启动论坛

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

(实测已通过)PE下批处理自动搜索gho,手动恢复系统(已经公布)

[复制链接]
跳转到指定楼层
1#
发表于 2007-5-24 12:28:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
打算做一个自动搜索硬盘上的gho文件,并根据创建时间来判断,采用最新的来恢复系统
1、运行环境:pe已经测试通过了,xp下运行可以查看gho文件,恢复系统意义不大,其它的nt系统应该也可以查看gho文件,未测试。
2、功能:搜索可写磁盘根目录及下一级目录中的gho文件,不搜索3级目录,以免浪费时间,因为习惯上都是放在根目录及下一级目录中,并且支持隐藏目录、特殊、带点目录如矮人及一键ghost的,支持隐藏文件。

在编写过程中得到lianjiangterse 2位的大力支持,非常感谢!
另外,借用了老毛桃的部分代码,一并鸣谢,呵呵
感谢haiou327 修正ghost命令参数! --070604
感谢terse去除无关信息                        --070604
实测时老毛桃的0418不支持sort命令,怎么办?
能用什么方法代替?主要是对有时间信息及文件名的文本文档处理。
........................!  --070605
变通了一下,改成手动的了,更安全,算是完成了,基本不会再改动了,除非有很好的算法!
而且又发现一个不支持的命令ping.
                                                                      --070606 by wjh6088
  1. @echo off
  2. color 2e
  3. :清除上次用过的文件
  4. attrib -s -r -h %temp%\*.ttt 2>nul
  5. del  %temp%\*.ttt 2>nul
  6. :确定可写盘的盘符
  7. SET TestFile=Test_%RANDOM%.TMP
  8. SETLOCAL ENABLEDELAYEDEXPANSION
  9. For %%I In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do (
  10. CD.>%%I:\%TestFile%
  11. cls&&If Exist %%I:\%TestFile% echo %%I >>%temp%\pflist.ttt&&DEL %%I:\%TestFile% /Q
  12. )
  13. echo.
  14. echo.
  15. set lll=      
  16. echo%lll% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  17. echo%lll% $                                                            $
  18. echo%lll% $  本程序自动查找gho文件(支持隐藏目录、隐藏文件、特殊.目录)$
  19. echo%lll% $  可列出可写磁盘的根目录及下一级目录中所有gho,但是排序时   $
  20. echo%lll% $  最多支持排列18个gho文件。                                 $
  21. echo%lll% $  感谢无忧的lianjiang、terse、老毛桃、haiou327支持          $
  22. echo%lll% $                                 编写:无忧启动  wjh6088    $
  23. echo%lll% $                                            2007年6月6日    $
  24. echo%lll% $                                                            $
  25. echo%lll% $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  26. ECHO   当前可写的盘符列表如下
  27. type %temp%\pflist.ttt
  28. :搜索根目录下的gho文件
  29. echo 正在搜索根目录下的gho文件
  30. for /f %%i in (%temp%\pflist.ttt) do (
  31. for /f "delims=$$$" %%I in ('dir /b /a-d /o-d "%%i:\*.gho"  2^>nul') do (echo %%i:\%%I >>%temp%\list.ttt
  32.   )
  33. )
  34. echo 根目录下的gho文件清单如下
  35. echo ####################################################
  36. type %temp%\list.ttt
  37. echo ####################################################
  38. :搜索次级目录下的gho文件
  39. echo 正在搜索次级目录下的gho文件
  40. for /f  %%o in (%temp%\pflist.ttt) do (
  41. for /f  "skip=5 tokens=4*" %%i in ('dir /x /ad %%o:\') DO (
  42. for /f  "delims=$$$" %%a in ('dir /b /a-d /o-d "%%o:\%%i\*.gho"  2^>nul') do echo %%o:\%%i\%%a >>%temp%\list.ttt
  43.   )
  44. )
  45. set 跳过行数=0
  46. set 变量名序号=1
  47. for /f "delims=$$$$$" %%i in (%temp%\list.ttt) do (set g1=%%i)&&(goto 递增)
  48. :递增
  49. set /a 跳过行数=%跳过行数%+1
  50. set /a 变量名序号=%变量名序号%+1
  51. if %跳过行数%==18 goto 赋值完毕
  52. call :赋值 %变量名序号%
  53. :赋值
  54. for /f "skip=%跳过行数% delims=$$$$$" %%i in (%temp%\list.ttt) do (set g%1=%%i)&&(goto 递增)
  55. :赋值完毕
  56. for /f "delims=[]" %%i in ('find /n /i ".gho" %temp%\list.ttt') do (set 文件数=%%i)
  57. :排序
  58. del %temp%\listfinish.ttt 2>nul
  59. goto g%文件数%
  60. :g1
  61. dir /a-d /b /o-d "%g1%">>%temp%\listfinish.ttt
  62. goto  glist
  63. :g2
  64. dir /a-d /b /o-d "%g1%" "%g2%">>%temp%\listfinish.ttt
  65. goto  glist
  66. :g3
  67. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%">>%temp%\listfinish.ttt
  68. goto  glist
  69. :g4
  70. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%">>%temp%\listfinish.ttt
  71. goto  glist
  72. :g5
  73. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%">>%temp%\listfinish.ttt
  74. goto  glist
  75. :g6
  76. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%">>%temp%\listfinish.ttt
  77. goto  glist
  78. :g7
  79. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%">>%temp%\listfinish.ttt
  80. goto  glist
  81. :g8
  82. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%">>%temp%\listfinish.ttt
  83. goto  glist
  84. :g9
  85. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%">>%temp%\listfinish.ttt
  86. goto  glist
  87. :g10
  88. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%">>%temp%\listfinish.ttt
  89. goto  glist
  90. :g11
  91. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%">>%temp%\listfinish.ttt
  92. goto  glist
  93. :g12
  94. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%">>%temp%\listfinish.ttt
  95. goto  glist
  96. :g13
  97. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%">>%temp%\listfinish.ttt
  98. goto  glist
  99. :g14
  100. dir /a-d  /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%" "%g14%">>%temp%\listfinish.ttt
  101. goto  glist
  102. :g15
  103. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%" "%g14%" "%g15%">>%temp%\listfinish.ttt
  104. goto  glist
  105. :g16
  106. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%" "%g14%" "%g15%" "%g16%">>%temp%\listfinish.ttt
  107. goto  glist
  108. :g17
  109. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%" "%g14%" "%g15%" "%g16%" "%g17%">>%temp%\listfinish.ttt
  110. goto  glist
  111. :g18
  112. dir /a-d /b /o-d "%g1%" "%g2%" "%g3%" "%g4%" "%g5%" "%g6%" "%g7%" "%g8%" "%g9%" "%g10%" "%g11%" "%g12%" "%g13%" "%g14%" "%g15%" "%g16%" "%g17%" "%g18%">>%temp%\listfinish.ttt
  113. goto  glist
  114. :glist
  115. echo 可写磁盘根目录及下一级目录中,共搜索出%文件数%个gho文件(不搜索光盘)
  116. echo 列表如下(按修改日期,从新到旧排列,最多排18个)
  117. echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  118. type %temp%\listfinish.ttt
  119. echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  120. echo 以下为详细信息,(包括所有gho文件,无数量限制),注意**不完全按修改日期排序
  121. echo 按任意键继续显示
  122. pause>nul
  123. for /f "delims=" %%j in (%temp%\list.ttt) do echo %%~dptznxj>>%temp%\listfinish3.ttt
  124. echo _____________________________________________________________________
  125. echo 文件修改日期 时间  大小(单位:字节) 文件路径、及名字
  126. echo *********************************************************************
  127. type %temp%\listfinish3.ttt
  128. echo *********************************************************************
  129. :ghost
  130. echo 将手动运行ghost32.exe,本批处理同一个目录下需要有ghost32.exe文件
  131. pause>nul
  132. ghost32.exe
  133. :end
  134. pause
  135. exit
复制代码

[ 本帖最后由 wjh6088 于 2007-6-7 04:40 PM 编辑 ]
2#
发表于 2007-5-24 12:48:10 | 只看该作者
深度的工具好像有此功能,可参考。
回复

使用道具 举报

3#
发表于 2007-5-24 13:15:48 | 只看该作者
用dirt  随便设定要搜索层数
回复

使用道具 举报

4#
发表于 2007-5-24 15:25:20 | 只看该作者
原帖由 terse 于 2007-5-24 01:15 PM 发表
用dirt  随便设定要搜索层数



呵呵,terse 说的对!
如果用DIR也可以,用变量来判断!
回复

使用道具 举报

5#
 楼主| 发表于 2007-5-24 16:00:27 | 只看该作者
2楼:深度工具没有用过,我想不用工具也是可以的
3楼:dirt这个应该是外部命令吧
回复

使用道具 举报

6#
 楼主| 发表于 2007-5-24 16:28:31 | 只看该作者
dir /s /ah .\*.gho
居然找不到文件
明摆的当前目录下的一个子目录(非隐藏系统属性)下有个我刚改为隐藏属性的gho文件,真见鬼了!!
/s不是包括子目录吗

[ 本帖最后由 wjh6088 于 2007-5-24 04:29 PM 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2007-5-24 16:36:03 | 只看该作者
有点思路了
次级目录的解决
FOR /F %i IN ('dir /b /ad') DO dir \%i\*.gho
回复

使用道具 举报

8#
 楼主| 发表于 2007-5-24 16:45:19 | 只看该作者
根目录下的解决
for %i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a) do (attrib -h -s -r  %i:\*.gho | dir  %i:\gho)


ps:
dir/b d:\*.* 和 dir d:\*.* /b
执行结果差远了,真搞不懂

[ 本帖最后由 wjh6088 于 2007-5-24 04:49 PM 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2007-5-24 17:34:16 | 只看该作者
初步解决查找根目录及次级目录下的gho文件,列表为%temp%\list.ttt

  1. @echo off
  2. del %temp%\list.ttt
  3. :1
  4. for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a) do (attrib %%i:\*.gho >>%temp%\list.ttt)


  5. :2
  6. setlocal ENABLEDELAYEDEXPANSION
  7. for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a) do (
  8. set pf=%%i (
  9. FOR /F %%I IN ('dir /b /ad  %%i:\') DO attrib %%i:\%%I\*.gho >>%temp%\list.ttt
  10. )
  11. endlocal

  12. find /v /i "找不到" %temp%\list.ttt
复制代码
回复

使用道具 举报

10#
 楼主| 发表于 2007-5-24 17:36:30 | 只看该作者
有兴趣的可以拿9楼的批处理查找看自己的gho文件
注意:特殊目录暂时不支持如: ~1  argh. 等
下面是支持特殊目录~1  argh. 的

  1. @echo off
  2. del %temp%\list.ttt
  3. :1
  4. for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a) do (attrib %%i:\*.gho >>%temp%\list.ttt)

  5. :2
  6. setlocal ENABLEDELAYEDEXPANSION
  7. for %%i in (z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a) do (
  8. set pf=%%i (
  9. FOR /F "skip=5 tokens=4,*" %%I IN ('dir /x /ad  %%i:\') DO attrib %%i:\%%I\*.gho >>%temp%\list.ttt
  10. )
  11. endlocal
  12. find /v /i "找不到" %temp%\list.ttt

  13. pause
复制代码

[ 本帖最后由 wjh6088 于 2007-5-24 06:03 PM 编辑 ]
回复

使用道具 举报

11#
发表于 2007-5-24 17:37:07 | 只看该作者
%目录1%   %目录2%   %目录3%

找到有效盘符>目录1
读取%目录1%
dir/ad %目录1%>目录2
读取%目录2%
DIR/AD %目录1%\%目录2%>目录3
读取%目录3%
DIR/A %目录1%\%目录2%\%目录3%\*.GHO>GHO.INI


思路就是这样,因为我使用的是DSO下的DIRT所以实际上需要你自己写!
至于CMD的......我不在系统中还原,因为有毒的话清不干净!



原帖由 wjh6088 于 2007-5-24 05:36 PM 发表
注意:特殊目录暂时不支持如: ~1  argh. 等

特殊目录用DIR /X 来查看

[ 本帖最后由 lym0451 于 2007-5-24 05:53 PM 编辑 ]
回复

使用道具 举报

12#
发表于 2007-5-25 07:07:28 | 只看该作者
原帖由 wjh6088 于 2007-5-24 04:00 PM 发表
2楼:深度工具没有用过,我想不用工具也是可以的

怎么是CMD下?我还以为是dos下呢。呵呵。
2楼我说的深度,是一个一键恢复的工具,里面有自动搜索gho的批处理,把搜索结果给出列表,按上下键就能选择恢复哪个镜像文件。当然是dos下的。
windows下,处理字符应要方便一些。
dos下的解决方案似乎意义更大些。
回复

使用道具 举报

13#
 楼主| 发表于 2007-5-25 18:33:56 | 只看该作者
今天好忙,一直没空上网!
google了一下,没发现这个软件,lianjiang 能给个链接吗?谢谢了(最好不要注册的)
回复

使用道具 举报

14#
发表于 2007-5-25 18:57:34 | 只看该作者
深度技术论坛
http://www.deepin.org/
回复

使用道具 举报

15#
发表于 2007-5-25 23:49:57 | 只看该作者
你是DOS下用?还是WIN用?
回复

使用道具 举报

16#
 楼主| 发表于 2007-5-26 00:40:57 | 只看该作者
原帖由 lianjiang 于 2007-5-25 06:57 PM 发表
深度技术论坛
http://www.deepin.org/

找不到!!
原帖由 terse 于 2007-5-25 11:49 PM 发表
你是DOS下用?还是WIN用?

都可以,主要是pe下的cmd用
回复

使用道具 举报

17#
发表于 2007-5-26 01:30:37 | 只看该作者
看看在WIN下好用不?(全盘搜索一级目录)
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk where "drivetype='3'" get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for /f "tokens=*" %%a in ('dir /b /a-d %%o\%%i\*.gho') do echo %%o\%%i\%%a >>123.txt
  )
)
for /f %%j in (123.txt) do echo %%~dptnxj >>321.txt
pause

DOS下用外部命令

[ 本帖最后由 terse 于 2007-5-26 02:24 AM 编辑 ]
回复

使用道具 举报

18#
发表于 2007-5-26 07:14:27 | 只看该作者
原帖由 wjh6088 于 2007-5-26 12:40 AM 发表
深度技术论坛
http://www.deepin.org/
找不到!!

难道深度现在不出dos版恢复工具了?
我是以前从别的地方下的。还以为它的论坛里该有呢。呵呵。
回复

使用道具 举报

19#
发表于 2007-5-26 07:20:35 | 只看该作者
原帖由 wjh6088 于 2007-5-26 12:40 AM 发表
深度技术论坛
http://www.deepin.org/
找不到!!


刚刚我去看了一下,软件就在置顶帖里。看来你并未真去深度的论坛看。
回复

使用道具 举报

20#
发表于 2007-5-26 10:53:18 | 只看该作者
1231231234556
回复

使用道具 举报

21#
 楼主| 发表于 2007-5-27 12:19:44 | 只看该作者
原帖由 terse 于 2007-5-26 01:30 AM 发表
看看在WIN下好用不?(全盘搜索一级目录)
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk where "drivetype='3'" get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for  ...

跑出来支持隐藏目录及隐藏文件,但不支持argh.这样的特殊目录
另外,txt文件里出现不整齐的信息
比如123.txt

  1. D:\GHOST8.3\07-03-30.GHO
  2. D:\GHOST8.3\070423.GHO
  3. D:\GHOST8.3\070524.GHO
  4. D:\GHOST8.3\98_usb_dx7.gho
  5. D:\GHOST8.3\C_Data.GHO
  6. D:\GHOST8.3\dgq 07.1.12 copy.GHO
  7. D:\GHOST8.3\GHOSTXP.GHO
  8. D:\GHOST8.3\old board 07-02-24.GHO
  9. D:\GHOST8.3\PE maotao grub.gho
  10. D:\GHOST8.3\SYS.GHO
  11. D:\GHOST8.3\wanneng 99999.gho
复制代码

而321txt却是

  1. 2007-03-30 21:50 D:\GHOST8.3\07-03-30.GHO
  2. 2007-04-24 23:56 D:\GHOST8.3\070423.GHO
  3. 2007-05-23 23:58 D:\GHOST8.3\070524.GHO
  4. 2005-02-09 23:32 D:\GHOST8.3\98_usb_dx7.gho
  5. 2007-05-23 23:55 D:\GHOST8.3\C_Data.GHO
  6. D:\GHOST8.3\dgq
  7. 2007-04-15 13:08 D:\GHOST8.3\GHOSTXP.GHO
  8. D:\GHOST8.3\old
  9. D:\GHOST8.3\PE
  10. 2006-09-27 00:03 D:\GHOST8.3\SYS.GHO
  11. D:\GHOST8.3\wanneng
复制代码
回复

使用道具 举报

22#
 楼主| 发表于 2007-5-27 12:27:41 | 只看该作者
原帖由 lianjiang 于 2007-5-26 07:20 AM 发表


刚刚我去看了一下,软件就在置顶帖里。看来你并未真去深度的论坛看。

是吗??
首先感谢你的答复
但是你并未说出软件名字,而我看软件的介绍也没有相关内容
各个区我都看完了,才来回答的,我不想某些人什么都不查找就直接来问
而且,深度的东西很多是要注册的!
回复

使用道具 举报

23#
发表于 2007-5-27 12:38:08 | 只看该作者
原帖由 wjh6088 于 2007-5-27 12:27 PM 发表

是吗??
首先感谢你的答复
但是你并未说出软件名字,而我看软件的介绍也没有相关内容
各个区我都看完了,才来回答的,我不想某些人什么都不查找就直接来问
而且,深度的东西很多是要注册的!

我没用深度的软件,只是以前下载试用过。所以具体名称我也不清楚。

正式名称为:DeepDOS 深度DOS个人版 Personal Edition V4.00
有要注册的?那就不清楚了。我见到的有安装版和绿色版。好像没有限制。
试用了一下,下面是深度处理后的文件。
gho.ini
H:\BACKUP\SYS.GHO             1,510,678KB 05-05-2007
H:\~1\SYS0.GHO                  1,491,368KB 04-20-2007

==================================
搜索引擎.BAT
@echo off
set searchfolder=
set object=
set object=%1
for %%a in (r R) do if %2#==-%%a# set searchfolder=Yes
echo       搜索范围:所有存在驱动器的根目录和一级目录>%temp%\me.bak
echo       搜索对象:%1>>%temp%\me.bak
echo       搜索路径:>>%temp%\me.bak
echo.>>%temp%\me.bak
echo.>>%temp%\me.bak
echo.>>%temp%\me.bak
echo  搜索结果:>>%temp%\me.bak
call vtm /T %temp%\me.bak %temp%\menu.bak
wbat fill24,10(1,62)(white on +black) " "
wbat fill16,10(7,62)(white on +black) " " !text17,10@%temp%\menu.bak
wbat text21,16(1,50)(+white on black) "[                                                ]"
for %%a in (folder result) do if exist %temp%\%%a.txt del %temp%\%%a.txt
drvtypes /d>%temp%\drv.txt
type %temp%\drv.txt|find /v "A:"|find /v "B:"|find /v "%RAMDRIVE%" >%temp%\drv.txt
strings linage=linesize %temp%\drv.txt
strings drv=read %temp%\drv.txt,1
if %drv%#==# goto end
strings linage=add %linage%,1
set number=0
:cycle
if %number%#==%linage%# goto next
strings number=add %number%,1
strings drv=read %temp%\drv.txt,%number%
if %drv%#==# goto cycle
dready %drv% /w |if errorlevel 2 goto cycle
echo %drv%>>%temp%\folder.txt
if %searchfolder%#==# goto cycle
dir "%drv%" /ad/b>%temp%\path.txt
strings linepath=read %temp%\path.txt,1
if %linepath%#==# goto cycle
strings linepath=linesize %temp%\path.txt
strings linepath=add %linepath%,1
set pathnum=0
:pcycle
if %pathnum%#==%linepath%# goto cycle
strings pathnum=add %pathnum%,1
strings folder=read %temp%\path.txt,%pathnum%
if %folder%#==# goto pcycle
echo %drv%\%folder%>>%temp%\folder.txt
goto pcycle
:next
for %%a in (searchfolder linage drv number linepath pathnum folder) do set %%a=
strings linage=linesize %temp%\folder.txt
strings linage=add %linage%,1
calc387 49 / %linage%>%temp%\norm.txt
strings norm=read %temp%\norm.txt,1
set guage=1
set number=0
:search
if %number%#==%linage%# goto end
strings number=add %number%,1
strings location=read %temp%\folder.txt,%number%
if %location%#==# goto search
dir "%location%\%object%" /a/b >%temp%\file.txt
strings filenum=read %temp%\file.txt,1
if %filenum%#==# goto guage
strings filenum=linesize %temp%\file.txt
strings filenum=add %filenum%,1
set num=0
:file
if %num%#==%filenum%# goto guage
strings num=add %num%,1
strings file=read %temp%\file.txt,%num%
if %file%#==# goto file
set wz=0
set filesize=
set filedate=
strings filesize=filesize %location%\%file%|if errorlevel 1 goto result
strings filedate=filedate %location%\%file%>nul
strings filesize=div %filesize%,1024
if %filesize%#==0# set filesize=1
strings length=length %filesize%
set div=%filesize%
:div
strings div=div %div%,1024
if not %div%#==0# strings wz=add %wz%,1
if not %div%#==0# goto div
strings wz=add %length%,%wz%
strings wz=sub 38,%wz%
strings filesize=addcommas %filesize%
set filesize=%filesize%KB
:result
set name=%location%\%file%                              
if not %wz%#==0# strings name=left %name%,%wz%
echo %name% %filesize% %filedate%>>%temp%\result.txt
wbat fill24,10(1,62)(white on +black) " " !text24,15 "%name% %filesize% %filedate%"
goto file
:guage
calc387 %guage% + %norm%>%temp%\norm.txt
strings guage=read %temp%\norm.txt,1
strings _dot=filename %guage%
calc387 %guage% * 2 - 1>%temp%\norm.txt
strings percent=read %temp%\norm.txt,1
strings percent=filename %percent%
wbat fill19,26(1,40)(white on +black) " " !text19,26(1,40) "%location%"
wbat fill21,16(1,%_dot%)(white on blue) !text21,39(1,2) "%percent%%%"
goto search
:end
wbat fill21,16(1,50)(white on blue) !text21,39(1,2) "100%%"
for %%a in (gho GHO iso ISO) do if %1#==*.%%a# if exist %temp%\result.txt copy %temp%\result.txt %temp%\%%a.ini /y >nul
for %%a in (drv folder path file norm) do if exist %temp%\%%a.txt del %temp%\%%a.txt
for %%a in (menu me) do if exist %temp%\%%a.bak del %temp%\%%a.bak
for %%a in (linage norm guage number location num file filenum object _dot percent filesize filedate wz length div name) do set %%a=
回复

使用道具 举报

24#
发表于 2007-5-27 12:51:07 | 只看该作者
原帖由 wjh6088 于 2007-5-27 12:19 PM 发表

跑出来支持隐藏目录及隐藏文件,但不支持argh.这样的特殊目录
另外,txt文件里出现不整齐的信息
比如123.txt

D:\GHOST8.3\07-03-30.GHO
D:\GHOST8.3\070423.GHO
D:\GHOST8.3\070524.GHO
D:\GHOST8 ...

空格问题吧!以下的可以吗?
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk where "drivetype='3'" get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for /f "tokens=*" %%a in ('dir /b /a-d %%o\%%i\*.gho') do echo %%o\%%i\%%a >>123.txt
  )
)
for /f "delims=" %%j in (123.txt) do echo %%~dptnxj >>321.txt
pause
回复

使用道具 举报

25#
 楼主| 发表于 2007-5-27 12:52:23 | 只看该作者
大致看了下,用到好几个dos的工具
看不大懂
回复

使用道具 举报

26#
 楼主| 发表于 2007-5-27 12:55:09 | 只看该作者
原帖由 terse 于 2007-5-27 12:51 PM 发表

空格问题吧!以下的可以吗?
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk where "drivetype='3'" get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for /f "toke ...

:lol 完美了,真是厉害啊,嵌套这么多层for:victory:
非常感谢!
321.txt的内容
  1. 2007-03-30 21:50 D:\GHOST8.3\07-03-30.GHO
  2. 2007-04-24 23:56 D:\GHOST8.3\070423.GHO
  3. 2007-05-23 23:58 D:\GHOST8.3\070524.GHO
  4. 2005-02-09 23:32 D:\GHOST8.3\98_usb_dx7.gho
  5. 2007-05-23 23:55 D:\GHOST8.3\C_Data.GHO
  6. 2007-01-30 02:49 D:\GHOST8.3\dgq 07.1.12 copy.GHO
  7. 2007-04-15 13:08 D:\GHOST8.3\GHOSTXP.GHO
  8. 2007-02-24 11:28 D:\GHOST8.3\old board 07-02-24.GHO
  9. 2007-04-21 00:58 D:\GHOST8.3\PE maotao grub.gho
  10. 2006-09-27 00:03 D:\GHOST8.3\SYS.GHO
  11. 2006-09-26 18:33 D:\GHOST8.3\wanneng 99999.gho
复制代码
回复

使用道具 举报

27#
发表于 2007-5-27 13:15:15 | 只看该作者
添加了引号(前面忘记了,呵呵)  以便搜索带空格文件夹
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk where "drivetype='3'" get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for /f "tokens=* delims=" %%a in ('dir /b /a-d "%%o\%%i\*.gho"') do echo %%o\%%i\%%a >>123.txt
  )
)
for /f "delims=" %%j in (123.txt) do echo %%~dptnxj >>321.txt
pause

我以为还是多个搜索移动  U盘的方便吧
@echo off
for /f "skip=1" %%o in ('wmic logicaldisk get caption') do (
for /f "skip=1 tokens=*" %%i in ('dir /b /ad %%o\') DO (
for /f "tokens=* delims=" %%a in ('dir /b /a-d "%%o\%%i\*.gho"') do echo %%o\%%i\%%a >>123.txt
  )
)
for /f "delims=" %%j in (123.txt) do echo %%~dptnxj >>321.txt
pause

[ 本帖最后由 terse 于 2007-5-30 09:15 PM 编辑 ]
回复

使用道具 举报

28#
 楼主| 发表于 2007-5-27 13:38:09 | 只看该作者
恢复系统主要还是在pe下,wmic可能不支持哦
我用老毛桃的“确定可写盘”来确认驱动器号
回复

使用道具 举报

29#
发表于 2007-5-27 15:13:24 | 只看该作者
for /f "skip=1" %%o in ('wmic logicaldisk get caption')替换为for %%o in (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) 一样
回复

使用道具 举报

30#
 楼主| 发表于 2007-6-2 17:42:46 | 只看该作者
最近太忙了,没空整理,明天公布
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 19:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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