|  | 
| 原帖由 zhuoer 于 2012-2-26 00:03 发表  实现目标:
 
 在批处理中预置好gho文件,手动选择恢复目标,怎么写?我写的都要提示dst unknow
 @shift 1
 @echo off
 color 0f
 title 无忧论坛(bbs.wuyou.net)wjh6088制作
 echo.
 echo.
 echo.
 echo    自动查找gho文件(支持隐藏目录、隐藏文件、特殊目录)
 echo.
 echo.
 echo.
 echo.
 echo            开始查找计算机中可写分区,请稍候……
 :清除上次用过的文件
 attrib -s -r -h %temp%\*.ttt 2>nul
 del  %temp%\*.ttt 2>nul
 :确定可写盘的盘符
 SET TestFile=Test_%RANDOM%.TMP
 SETLOCAL ENABLEDELAYEDEXPANSION
 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 (
 CD.>%%I:\%TestFile%
 CLS&&If Exist %%I:\%TestFile% echo %%I >>%temp%\pflist.ttt&&DEL %%I:\%TestFile% /Q
 )
 ECHO.
 echo    当前可写的盘符列表如下
 type %temp%\pflist.ttt
 :搜索根目录下的gho文件
 for /f %%i in (%temp%\pflist.ttt) do (
 for /f "delims=$$$" %%I in ('dir /b /a-d  "%%i:\*.gho"  2^>nul') do (echo %%i:\%%I >>%temp%\list.ttt
 )
 )
 :搜索次级目录下的gho文件
 for /f  %%o in (%temp%\pflist.ttt) do (
 for /f  "skip=5 tokens=4*" %%i in ('dir /x /ad %%o:\') DO (
 for /f  "delims=$$$" %%a in ('dir /b /a-d "%%o:\%%i\*.gho" 2^>nul') do echo %%o:\%%i\%%a >>%temp%\list.ttt
 )
 )
 for /f "delims=" %%j in (%temp%\list.ttt) do echo %%~dptnxj>>%temp%\listfinish.ttt
 cls
 echo 以下为查找到的gho文件(按文件创建日期,从最新到最早排列)
 sort /r %temp%\listfinish.TTT >%temp%\listfinish2.ttt
 :menu
 echo 每一行前[]内的数字是行号.
 echo _______________________________________________
 find /n ":"  <%temp%\listfinish2.ttt
 echo _______________________________________________
 set /p sz0=[请在后面输入选择需要恢复GHO文件的序号]
 if %sz0%==1  goto 特殊
 set /a sz=%sz0%-1
 for /f "skip=%sz% tokens=1,2,* delims= " %%i in (%temp%\listfinish2.ttt) do (set gho=%%k)&&(goto next)
 :next
 echo 以下是你选择恢复系统的gho文件:
 echo %gho%
 echo ____________________________________________________________
 goto ghost
 :特殊
 for /f "tokens=1,2,* delims= " %%i in (%temp%\listfinish2.ttt) do (set gho=%%k)&&(goto 特殊2)
 :特殊2
 echo 以下是你选择恢复系统的gho文件:
 echo %gho%
 echo ____________________________________________________________
 :ghost
 echo 按y将自动将%gho%恢复到第一硬盘的第一分区上,按其它键改为手动
 echo 注意:一定要确认第一硬盘是否正确。
 echo       本批处理同一个目录下需要有ghost32.exe文件
 echo 点右上角的x退出本程序
 echo ____________________________________________________________
 set /p sd=[请输入y或其它键]
 if %sd%==y (goto ghost1)  else (goto ghost2)
 :ghost1
 ghost32.exe -rb -sure -clone,mode=pload,src=%gho%:1,dst=1:1
 goto end
 :ghost2
 ghost32.exe
 :end
 attrib -s -r -h %temp%\*.ttt 2>nul
 del  %temp%\*.ttt 2>nul
 echo 按任意键退出本程序
 pause >nul
 | 
 |