中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 07:25
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 这个批处理文件是怎么传输GHOST密码的? 查看 3,294 回复 23
楼 主 这个批处理文件是怎么传输GHOST密码的? 发表于 2005-10-20 13:45 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
谁能帮我解释一下批处理文件的意思?

@ECHO OFF
SET ERRCODE=
PATH=%TEMP%\TOOLS;%TEMP%\DOS
:CHECKCD
REM Check CD-ROM Drive
REM 0:Ready 1:NotReady 2:NotCD-ROMdrive 3:IllegalDrive
CDCHECK T: > NUL
CDCHECK T: > NUL
IF ERRORLEVEL 2 GOTO NO_CDDRV
IF ERRORLEVEL 1 GOTO SET_CDROM
SET CDDRV=T:
GOTO CD_EXIST

:SET_CDROM
REM Insert CD-ROM
BMPVIEW %TEMP%\BMP\SETCDROM.BMP
PAUSE > NUL

:CHECKCD2
REM Check CD-ROM Drive
CDCHECK T: > NUL
CDCHECK T: > NUL
IF ERRORLEVEL 2 GOTO NO_CDDRV
IF ERRORLEVEL 1 GOTO NOCDROM
SET CDDRV=T:
GOTO CD_EXIST

:CD_EXIST
REM Check Recovery CD-ROM
IF NOT EXIST %CDDRV%\PREINST.GHO GOTO BAD_CDROM
IF NOT EXIST %CDDRV%\PREINST.CRC GOTO BAD_CDROM
IF NOT EXIST %CDDRV%\GHOST.EXE GOTO BAD_CDROM
IF NOT EXIST %TEMP%\TOOLS\GHOST.EXE COPY %CDDRV%\GHOST.EXE %TEMP%\TOOLS > NUL
IF EXIST %CDDRV%\SPAN.BMP COPY %CDDRV%\SPAN.BMP %TEMP%\TOOLS > NUL
IF EXIST %TEMP%\TOOLS\SPAN.BMP COPY %TEMP%\TOOLS\SPAN.BMP %TEMP%\ > NUL
COPY %CDDRV%\PREINST.CRC %TEMP%\PREINST.CD > NUL

FOR %%A IN (%CDDRV%\*.*) DO CALL FILECOPY.BAT %%A %TEMP%\

:RECOVERY
IF NOT EXIST %CDDRV%\PREDATA.BAT GOTO BAD_CDROM
IF (%COMPMODE%) == () CALL %CDDRV%\PREDATA.BAT
REM --- IF NOT EXIST %TEMP%\BMP\CHANGE.BMP GOTO SKIP
REM --- IF (%CDMAX%) == (1) GOTO SKIP
REM --- BMPVIEW %TEMP%\BMP\CHANGE.BMP
REM --- PAUSE > NUL
:SKIP
SET ERRCODE=.
IF (%PASSMODE%) == (YES) GOTO GHOSTPASS
IF (%COMPMODE%) == (PARTITION) GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF (%COMPMODE%) == (DRIVE) GHOST -clone,mode=load,src=%CDDRV%\PREINST.GHO,dst=1,szeE -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF ERRORLEVEL 1 GOTO REC_NG
GOTO GDONE

:GHOSTPASS
SET TGHOSTPS=%FILENAME%
IF (%COMPMODE%) == (PARTITION) TGHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF (%COMPMODE%) == (DRIVE) TGHOST -clone,mode=load,src=%CDDRV%\PREINST.GHO,dst=1,szeE -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF ERRORLEVEL 1 GOTO REC_NG

:GDONE
LBA /C > NUL
GDISK 1 /MBR > NUL
SET ERRCODE=..
IF (%COMPMODE%) == (PARTITION) GHOST -CRC32,action=pcreate,src=1:1,crcfile=%TEMP%\PREINST.HDD -afile=%DRV1%\PREINST.ERR -sure -fni %GOPT%
IF (%COMPMODE%) == (DRIVE) GHOST -CRC32,action=create,src=1,crcfile=%TEMP%\PREINST.HDD -afile=%DRV1%\PREINST.ERR -sure -fni %GOPT%
IF ERRORLEVEL 1 GOTO REC_NG
SET ERRCODE=...
COMPFILE %TEMP%\PREINST.CD %TEMP%\PREINST.HDD > NUL
IF ERRORLEVEL 1 GOTO COMPERR

:NORMAL
IF EXIST CMOS.BAT CALL CMOS.BAT
REM Recovery success
SET ERRCODE=
BMPVIEW %TEMP%\BMP\THEEND.BMP

:LOOP
PAUSE > NUL
HWREBOOT
GOTO LOOP

REM ================= ERROR ===============================
:COMPERR
FC %TEMP%\PREINST.CD %TEMP%\PREINST.HDD > %TEMP%\COMP.LOG
GOTO REC_NG

:BAD_CDROM
REM Bad CD-ROM
BMPVIEW %TEMP%\BMP\BADCDROM.BMP /X=140 /Y=160
CLK
CHOICE > NUL
IF ERRORLEVEL 2 GOTO CDERREND
REM Push 'Y' button
BMPVIEW %TEMP%\BMP\Y1.BMP /XC /X=340 /Y=288
GOTO SET_CDROM

:NOCDROM
REM CD-ROM not found
BMPVIEW %TEMP%\BMP\NOCDROM.BMP /X=140 /Y=160
CLK
CHOICE > NUL
IF ERRORLEVEL 2 GOTO CDERREND
REM Push 'Y' button
BMPVIEW %TEMP%\BMP\Y1.BMP /XC /X=340 /Y=288
GOTO SET_CDROM

:NO_CDDRV
REM CD-ROM Drive not found
BMPVIEW %TEMP%\BMP\NO_CDDRV.BMP
PAUSE > NUL
GOTO END

:REC_NG
REM Recovery error
BMPVIEW %TEMP%\BMP\RECOVERR.BMP /X=96 /Y=168
ECHO %ERRCODE%
CLK
CHOICE /C:YNS> NUL
IF ERRORLEVEL 3 GOTO DEBUGEND
IF ERRORLEVEL 2 GOTO R_ERREND
REM Push 'Y' button
BMPVIEW %TEMP%\BMP\Y3.BMP /XC /X=392 /Y=272
REM Restart
BMPVIEW %TEMP%\BMP\REBOOT2.BMP
PAUSE > NUL
REM check boot devie
REM 0:FD 1:CD-ROM
CDCKBOOT > NUL
REM if errorlevel 1 then set boot priority "CD-ROM"=4
IF ERRORLEVEL 1 SETBOOT 4 >NUL
REM reboot
HWREBOOT
GOTO END

:R_ERREND
REM Push 'N' button
BMPVIEW %TEMP%\BMP\N1.BMP /XC /X=464 /Y=272
GOTO END

:CDERREND
REM Push 'N' button
BMPVIEW %TEMP%\BMP\N1.BMP /XC /X=412 /Y=288
GOTO END

:END
OFF
BMPVIEW %TEMP%\BMP\NO_PWOFF.BMP
PAUSE > NUL
GOTO END

EBUGEND
IF EXIST %TEMP%\PREINST.ERR FIND /I "Message:" %TEMP%\PREINST.ERR


[ Last edited by qwe1234567 on 2006-6-7 at 08:22 ]
2 发表于 2005-10-20 18:58 ·  中国 山东 济南 移动
钻石会员
★★★★★
积分 10,046
发帖 3,039
注册 2002-11-11 00:00
UID 223
性别 男
状态 离线
每一行都要解釋?
简单就是美
3 发表于 2005-10-20 22:36 ·  中国 广东 广州 海珠区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
UID 15812
性别 男
来自 广东广州
状态 离线
大概就是自动寻找光驱盘符,然后自动运行ghost读取镜像文件再恢复到C盘。
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
4 发表于 2005-10-21 19:17 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
5 发表于 2005-10-21 21:40 ·  中国 安徽 宿州 泗县 电信
银牌会员
★★★
积分 1,339
发帖 595
注册 2004-05-26 00:00
UID 25306
性别 男
来自 安徽 宿州
状态 离线
多看看几遍就能看懂了。
6 发表于 2005-10-21 23:10 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
Originally posted by Michael at 2005-10-20 18:58:
每一行都要解釋?

7 不好意思反问一句 发表于 2005-10-22 20:40 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
UID 22966
性别 男
状态 离线
这个好像不能在dos下運行吧? 看不懂~
8 发表于 2005-10-24 08:44 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
9 详细注释! 发表于 2005-10-25 14:30 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
这是预安装镜像文件的硬盘化安装批处理程序。详细注释见下面,注意:这不是能执行的.BAT!要运行,请用原来的.BAT。

@ECHO OFF
SET ERRCODE=
PATH=%TEMP%\TOOLS;%TEMP%\DOS
:CHECKCD
测光驱1
无光驱,跳转NO_CDDRV
未准备好,跳转SET_CDROM
SET CDDRV=T:
跳转 CD_EXIST

:SET_CDROM
插入光盘
显示图片SETCDROM.BMP

:CHECKCD2
测光驱2
无光驱,跳转NO_CDDRV
未准备好,跳转NOCDROM
SET CDDRV=T:
跳转 CD_EXIST

:CD_EXIST
测恢复光盘文件
无%CDDRV%\PREINST.GHO,跳转BAD_CDROM
无%CDDRV%\PREINST.CRC,跳转BAD_CDROM
无%CDDRV%\GHOST.EXE,跳转BAD_CDROM
无%TEMP%\TOOLS\GHOST.EXE,COPY %CDDRV%\GHOST.EXE %TEMP%\TOOLS > NUL
有%CDDRV%\SPAN.BMP,COPY %CDDRV%\SPAN.BMP %TEMP%\TOOLS > NUL
有%TEMP%\TOOLS\SPAN.BMP,COPY %TEMP%\TOOLS\SPAN.BMP %TEMP%\ > NUL
COPY %CDDRV%\PREINST.CRC %TEMP%\PREINST.CD > NUL
全部拷贝FOR %%A IN (%CDDRV%\*.*) DO CALL FILECOPY.BAT %%A %TEMP%\

:RECOVERY
无%CDDRV%\PREDATA.BAT,跳转BAD_CDROM
%COMPMODE%为空,CALL %CDDRV%\PREDATA.BAT
REM --- IF NOT EXIST %TEMP%\BMP\CHANGE.BMP GOTO SKIP
REM --- IF (%CDMAX%) == (1) GOTO SKIP
REM --- BMPVIEW %TEMP%\BMP\CHANGE.BMP
REM --- PAUSE > NUL
:SKIP
SET ERRCODE=.
(%PASSMODE%)为(YES)密码设置,跳转GHOSTPASS
(%COMPMODE%)为(PARTITION)分区拷,执行GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
(%COMPMODE%)为(DRIVE)全盘拷,执行GHOST -clone,mode=load,src=%CDDRV%\PREINST.GHO,dst=1,szeE -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF ERRORLEVEL 1,跳转REC_NG
跳转GDONE

:GHOSTPASS
SET TGHOSTPS=%FILENAME%
(%COMPMODE%)为(PARTITION),执行GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
(%COMPMODE%)为(DRIVE),执行GHOST -clone,mode=load,src=%CDDRV%\PREINST.GHO,dst=1,szeE -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
IF ERRORLEVEL 1,跳转REC_NG

:GDONE
LBA /C > NUL
GDISK 1 /MBR > NUL
SET ERRCODE=..
(%COMPMODE%)为(PARTITION),执行GHOST -CRC32,action=pcreate,src=1:1,crcfile=%TEMP%\PREINST.HDD -afile=%DRV1%\PREINST.ERR -sure -fni %GOPT%
(%COMPMODE%)为(DRIVE),执行GHOST -CRC32,action=create,src=1,crcfile=%TEMP%\PREINST.HDD -afile=%DRV1%\PREINST.ERR -sure -fni %GOPT%
IF ERRORLEVEL 1,跳转REC_NG
SET ERRCODE=...
COMPFILE %TEMP%\PREINST.CD %TEMP%\PREINST.HDD > NUL
IF ERRORLEVEL 1,跳转COMPERR

:NORMAL
有CMOS.BAT,执行CALL CMOS.BAT
REM 成功恢复
SET ERRCODE=
显示图片%TEMP%\BMP\THEEND.BMP

:LOOP
PAUSE > NUL
重启HWREBOOT
跳转LOOP

REM 出错
:COMPERR比较差异
FC %TEMP%\PREINST.CD %TEMP%\PREINST.HDD > %TEMP%\COMP.LOG
跳转REC_NG

:BAD_CDROM光驱无效
显示图片%TEMP%\BMP\BADCDROM.BMP /X=140 /Y=160
CLK
CHOICE > NUL
IF ERRORLEVEL 2 GOTO CDERREND
REM 选中Y
显示图片%TEMP%\BMP\Y1.BMP /XC /X=340 /Y=288
跳转SET_CDROM

:NOCDROM无光驱
显示图片%TEMP%\BMP\NOCDROM.BMP /X=140 /Y=160
CLK
CHOICE > NUL
IF ERRORLEVEL 2,跳转CDERREND
REM 选中Y
显示图片%TEMP%\BMP\Y1.BMP /XC /X=340 /Y=288
跳转SET_CDROM

:NO_CDDRV光驱未找到
显示图片%TEMP%\BMP\NO_CDDRV.BMP
PAUSE > NUL
跳转END

:REC_NG恢复出错
显示图片%TEMP%\BMP\RECOVERR.BMP /X=96 /Y=168
显示出错码ECHO %ERRCODE%
CLK
CHOICE /C:YNS> NUL
IF ERRORLEVEL 3,跳转DEBUGEND
IF ERRORLEVEL 2,跳转R_ERREND
REM 选中Y
显示图片%TEMP%\BMP\Y3.BMP /XC /X=392 /Y=272

显示图片%TEMP%\BMP\REBOOT2.BMP
PAUSE > NUL
REM 测启动设备
REM 0:FD 1:CD-ROM
CDCKBOOT > NUL
REM if errorlevel 1 then set boot priority "CD-ROM"=4
IF ERRORLEVEL 1设置SETBOOT 4 >NUL
重启HWREBOOT
跳转END

:R_ERREND
REM 选中Y
显示图片%TEMP%\BMP\N1.BMP /XC /X=464 /Y=272
跳转END

:CDERREND
REM 选中Y
显示图片%TEMP%\BMP\N1.BMP /XC /X=412 /Y=288
跳转END

:END
OFF
显示图片%TEMP%\BMP\NO_PWOFF.BMP
PAUSE > NUL
跳转END

:DEBUGEND
有%TEMP%\PREINST.ERR,执行FIND /I "Message:" %TEMP%\PREINST.ERR
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
10 发表于 2005-10-27 13:39 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
能解释下面一句吗?
GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%
11 发表于 2005-10-27 16:56 ·  中国 广东 东莞 电信
初级用户
积分 190
发帖 40
注册 2005-03-17 00:00
UID 37149
性别 男
状态 离线
大概是
将光盘的PREINST.GHO恢复到第一个硬盘第一个分区,若出错输记录文件到=%TEMP%\PREINST.ERR 。
12 发表于 2005-10-28 07:34 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
13 发表于 2005-10-31 12:41 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
Re qwe1234567:

我解释了那么长,你怎么这种态度?一句赞扬的话都没有!
别人给你回帖,你该先应答,再进一步提问呀。不要一副老大的派头!
你的帖我不想再跟了!

[ Last edited by 本是 on 2005-10-31 at 12:42 ]
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
14 发表于 2005-10-31 14:17 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
UID 42843
性别 男
来自 四川南充
状态 离线
RE 本是:
你好,你解释得很好,我非常感谢你!也非常感谢关心我这个问题的人,只是我不明白的是GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%这个命令是怎么将PREINST.GHO文件的密码发送给GHOST的,所以我忘记给各位致谢,非常对不起你!
15 发表于 2005-10-31 15:14 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 2,223
发帖 789
注册 2005-01-27 00:00
UID 35703
性别 男
状态 离线
Sorry! qwe1234567. 我也是半开玩笑的。玩笑就到此为止吧。言归正传--
因为GHOST命令行传递密码的手段是-pwd=xxx,所以GHOST -clone,mode=pload,src=%CDDRV%\PREINST.GHO:1,dst=1:1 -afile=%TEMP%\PREINST.ERR -fni -auto -sure -batch %GOPT%中唯有%GOPT%是可变项,此环境变量可能就传递了密码,再仔细看看.BAT文件的其它行,应该可以找出%GOPT%的实际值。
my major is english----my love is dos----my teacher is the buddha----my friends--how about U
论坛跳转: