『第
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 ]
|