中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [求助]LOCATE和DIR哪个更快一些?
作者:
标题: [求助]LOCATE和DIR哪个更快一些? 上一主题 | 下一主题
formatted
初级用户




积分 179
发帖 26
注册 2002-12-10
状态 离线
『楼 主』:  [求助]LOCATE和DIR哪个更快一些?

有一段命令如下:
dir %gpath%*.gho /b /s >>%temp%\tmp.txt
我嫌DIR太慢,就从一叶松的启动盘里借了个LOCATE过来,改成:
locate %gpath%*.gho /n >%temp%\tmp.txt
这个命令单独操作时能找到指定盘上的GHOST镜象文件,但为什么放到上述命令行里时就不对呢?
还望哪位高人指点

2003-1-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

是指什么不对呢?我试了,可以使用呀。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-1-16 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
formatted
初级用户




积分 179
发帖 26
注册 2002-12-10
状态 离线
『第 3 楼』:  

我可能没说明白。
如果用dir d: *.gho /b /s >>%temp%\tmp.txt 和locate d: *.gho /n >%temp%\tmp.txt,
2者最后显示在tmp.txt里的结果是一样的,都是只有简单的形如“d:\backup\xppro.gho”一句,我以为成功了呢,所以才做成盘,但实际结果是后者总告诉我找不到,气得我不成,然后就在DOS下手动输入命令locate d: *.gho,立刻就找到了,不明白是怎么回事。
干脆,老大我把批处理文件贴在这里,您帮我看看问题在哪儿。
@echo off
call pdos.bat
recur
cls
:main
call w.bat box @clone.bat:w_main
if errorlevel 100 goto exit
if errorlevel 4 goto exit
if errorlevel 3 goto ghost
if errorlevel 2 goto rec1

:bak1
set m=
set n=
call w.bat box @clone.bat:w_bak1
if errorlevel 100 goto main
if "%?%"=="5" goto main
if "%?%"=="4" goto bak_mn
if "%?%"=="3" goto bak_21
if "%?%"=="2" goto bak_12

:bak_11
set m=1
set n=1
goto bak2

:bak_12
set m=1
set n=2
goto bak2

:bak_21
set m=2
set n=1
goto bak2

:bak_mn
if "%m%"=="" goto bak1
if "%n%"=="" goto bak1

:bak2
call w.bat box @clone.bat:w_bak2
if errorlevel 100 goto bak1
if "%?%"=="7" goto bak1
if "%?%"=="6" goto bak_num
if "%?%"=="5" goto bak_700
if "%?%"=="4" goto bak_680
if "%?%"=="3" goto bak_650
if "%?%"=="2" goto bak_640

:bak_nos
call w.bat box @clone.bat:w_bak3
if errorlevel 100 goto bak2
if errorlevel 2 goto bak2
set gsize=0
goto bak3

:bak_640
set gsize=640
goto bak3

:bak_650
set gsize=650
goto bak3

:bak_680
set gsize=680
goto bak3

:bak_700
set gsize=700
goto bak3

:bak_num
if "%gsize%"=="" goto bak2
if "%gsize%"=="000" set gsize=0
if "%gsize%"=="00" set gsize=0
goto bak3

:bak3

echo :d_list " 将GHO文件保存在 "[x]>%temp%\tmp.txt
func -a6 >>%temp%\tmp.txt
call w.bat list @%temp%\tmp.txt:d_list
if errorlevel 100 goto bak2
if "%wbat%"=="" goto bak2
set gpath=%wbat%:\
goto bak4

:bak4
call w.bat box @clone.bat:w_bak4
if errorlevel 100 goto bak3
if "%?%"=="2" goto bak3
if "%gname%"=="" goto bak4

if exist %gpath%%gname%.GHO goto bak41
goto bak5

:bak41
call w.bat box @clone.bat:w_bak41 #2
if errorlevel 100 goto bak4
if errorlevel 2 goto bak4

:bak5
call w.bat box @clone.bat:w_bak5
if errorlevel 100 goto bak4
if errorlevel 4 goto bak4
if errorlevel 3 goto bak_z2
if errorlevel 2 goto bak_z1
set gzip=0
goto bak6

:bak_z1
set gzip=1
goto bak6

:bak_z2
set gzip=2
goto bak6

:bak6
call w.bat box @clone.bat:w_bak6
if errorlevel 100 goto bak5
if errorlevel 2 goto bak5

if "%gsize%"=="0" goto Dbak_ns
if "%gzip%"=="0" goto Dbak_nz

call quit
cls
ghost -sure -fx -auto -span -z%gzip% -split=%gsize% -clone,mode=pdump,src=%M%:%N%,dst=%gpath%%gname%.GHO
goto end

:Dbak_nz
call quit
cls
ghost -sure -fx -auto -span -split=%gsize% -clone,mode=pdump,src=%M%:%N%,dst=%gpath%%gname%.GHO
goto end

:Dbak_ns
if "%gzip%"=="0" goto Dbak_nsz
call quit
cls
ghost -sure -fx -z%gzip% -clone,mode=pdump,src=%M%:%N%,dst=%gpath%%gname%.GHO
goto end

:Dbak_nsz
call quit
cls
ghost -sure -fx -clone,mode=pdump,src=%M%:%N%,dst=%gpath%%gname%.GHO
goto end

:rec1
set m=
set n=
call w.bat box @clone.bat:w_rec1
if errorlevel 100 goto main
if "%?%"=="5" goto main
if "%?%"=="4" goto rec_mn
if "%?%"=="3" goto rec_21
if "%?%"=="2" goto rec_12

:rec_11
set m=1
set n=1
goto rec2

:rec_12
set m=1
set n=2
goto rec2

:rec_21
set m=2
set n=1
goto rec2

:rec_mn
if "%m%"=="" goto rec1
if "%n%"=="" goto rec1

:rec2
echo :d_list " 选择GHO文件的所在盘 "[x]>%temp%\tmp.txt
func -a9 >>%temp%\tmp.txt
call w.bat list @%temp%\tmp.txt:d_list
if errorlevel 100 goto rec1
if "%wbat%"=="" goto rec1
set gpath=%wbat%:\

echo Searching %gpath%*.gho ...
echo :m_dir " 选择需要恢复的GHO文件 " [x]>%temp%\tmp.txt
locate %gpath%*.gho /n >%temp%\tmp.txt
call w.bat list @%temp%\tmp.txt:m_dir
if errorlevel 100 goto rec2
if "%wbat%"=="" goto rec2
set gfile=%wbat%

:rec3
set p=
call w.bat box @clone.bat:w_rec3
if errorlevel 100 goto rec2
if "%?%"=="3" goto rec2
if "%?%"=="2" goto rec_p

set p=1
goto rec4

:rec_p
if "%p%"=="" goto rec3

:rec4
set isOK=
call w.bat box @clone.bat:w_rec4
if errorlevel 100 goto rec3
if "%?%"=="2" goto rec3

if "%isOK%"=="OK" goto do_rec

goto rec4

:do_rec
call quit
ghost -sure -clone,mode=pload,src=%gfile%:%P%,dst=%M%:%N%
if errorlevel 1 goto exit

wbat box "Reboot Now?" Yes,No
if errorlevel 100 goto exit
if errorlevel 2 goto exit
reboot
goto end

:w_main " 启用 Ghost "
[ 1. Ghost 备份向导 ]
[ 2. Ghost 恢复向导 ]
[ 3. 直接启动 Ghost ]
[ 4. 退出           ]
::

:w_bak1 " Ghost 备份向导 "

[ 1. 备份第1硬盘第1分区 ]
[ 2. 备份第1硬盘第2分区 ]
[ 3. 备份第2硬盘第1分区 ]

  4. 备份第[$M,1]硬盘第[$N,1]分区 [OK]

[ 5. 返回               ]
::

:w_bak2 " Ghost 备份向导 "

备份第%M%硬盘第%N%分区
======================
  [ 0. 不分卷 ]

  分卷备份:
  [ 1. 640 MB ]
  [ 2. 650 MB ]
  [ 3. 680 MB ]
  [ 4. 700 MB ]
  自定大小:(注意:只能输入数字)
  [$gsize,3]MB [OK]

  [ 5. 返回   ]
::

:w_bak3
  
确定不分卷备份吗?

[确定(&O)] [取消(&C)]
::

:w_bak4 " Ghost 备份向导 "

分卷%gsize%MB备份第%M%硬盘第%N%分区到%gpath%(0MB表示不分卷)
============================================================

输入GHO文件名:[$gname,8].GHO   [确定(&O)] [取消(&C)]

注意:
请按照DOS的文件名规定正确输入,本程序不作验证,不要输入.GHO。
::

:w_bak41

文件 %gpath%%gname%.GHO 已经存在,是否覆盖?

          [是(&Y)] [否(&N)]
::

:w_bak5 " Ghost 备份向导 "

       需要对备份文件进行压缩吗?

[不压缩(&N)] [快压缩(&F)] [高压缩(&H)] [返回(ESC)&]
::

:w_bak6 " Ghost 备份向导 "

准备就绪
==========

  压缩等级:%gzip% (0:不压缩 1:快压缩 2:高压缩)
  分卷%gsize%MB (0MB表示不分卷)
  第%M%硬盘
  第%N%分区
  备份到%gpath%%gname%.GHO

  确定以上信息正确吗?
  备份之前请确定您所选择的盘的容量足够大。
  按【确定】按钮开始备份数据。
  按【取消】按钮重新输入信息。

  [确定(&O)] [取消(&C)]
::

:w_rec1 " Ghost 恢复向导 "

[ 1. 恢复到第1硬盘第1分区 ]
[ 2. 恢复到第1硬盘第2分区 ]
[ 3. 恢复到第2硬盘第1分区 ]

  4. 恢复第[$M,1]硬盘第[$N,1]分区 [OK]

[ 5. 返回                 ]
::

:w_rec3 " Ghost 恢复向导 "

源文件:%gfile%
目标:第%M%硬盘第%N%分区
  
[ 1. 从源文件的第1分区恢复 ]

  2. 从源文件的第[$P,1]分区恢复  [OK]
  
[ 3. 返回                  ]
::

:w_rec4 " Ghost 恢复向导 "

准备就绪
==========

  现在准备把%gfile%中的第%P%分区
  恢复到此计算机中的第%M%硬盘第%N%分区!

  在此之前,请确认您的第%M%硬盘第%N%分区中的文件已经备份好!
  一旦恢复开始后,该分区的数据将会全部被覆盖,不能恢复!

  请输入大写的OK并按【确定】按钮后,将开始恢复,
  否则按【取消】按钮返回。

  [$isOK,2]          [确定(&O)] [取消(&C)]
::

:ghost
call quit
cls
ghost
goto end

:exit
call quit
cls

:end
set isOK=
set gfile=
set gname=
set gsize=
set gzip=
set gpath=
set m=
set n=
set p=
set ?=
set wbat=
if exist %temp%\tmp.txt del %temp%\tmp.txt
[ Last edited by willsort on 2005-10-13 at 10:51 ]

2003-1-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: