|
发表于 2012-2-26 10:49:23
|
显示全部楼层
原帖由 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 |
|