
| Quote: | |
|
CODE: [Copy to clipboard]提取文件二:findcd.bat(应为findcdr.bat)@ECHO OFF
LH MSCDEX.EXE /D:mscd000>nul
:: 加载CD-ROM驱动到高端内存
findcd /s>nul
:: 寻找光驱并将其盘符保存入环境变量 %CDROM1% %CDROM2% ...
call findcdr "ghost.exe" C D E F G H I J K L M N O P Q R S T U V W X Y Z
:: 调用批处理 findcdr.bat,检查光驱盘符 %cdrom1% 并写入到环境变量 %cdrom%
%CDROM%:
:: 切换至找到的光驱盘符
ghost -clone,mode=pload,src=winxpsp2.gho:1,dst=1:1 -sure -rb
:: 调用 ghost 从镜像文件 winxpsp2.gho 恢复。
CODE: [Copy to clipboard]@echo off
set file=%1
:: 设置环境变量 %file% 为命令行参数 %1 (即保存第一个参数 ghost.exe)
:FCDR
if "%CDROM1%"=="%2:" goto SCDR
:: 如果 %cdrom1% 等于 %2: 就跳转到标号scdr的语句,即匹配光驱盘符即发生跳转。
shift
:: 左移一次命令行参数,此时原 %2 变为 %1,%3 变为 %2 依次类推
goto FCDR
:: 继续 fcdr 循环
:: *** 此处代码存在问题,如果 %cdrom1% 未空(即未找到光驱盘符),则陷入死循环
:: *** 可在 shift 之后加一句 if "%2"=="" goto end 解决此问题
:SCDR
cda %2:>nul
:: 测试光驱 %2: 是否准备好光盘
if errorlevel 1 goto next
:: 返回错误码大于等于 1 即为未准备好,跳到 next 处判断是否继续 fcdr 循环
if not exist %2:\%FILE% goto next
:: 否则准备好,检查是否存在文件 %file% ,即前面保存的 ghost.exe ,如果没有则也跳至 next 处
set cdrom=%2
:: 否则光盘盘符 %2 有效,将之保存至环境变量 %cdrom% 中
goto end
:: 如果光驱盘符为 Z ,则认为循环结束,否则继续 fcdr 循环
:: *** 此处代码存在问题,因为 %cdrom1% 只保存了第一个光驱盘符,只能与命令行中盘符串成功匹配一次
:: *** 如果在第一次匹配成功的 scdr 中检测无法通过,则以后的检测都属多余操作
:: *** 在此建议:或者判断并改用 %cdrom2% 进行盘符匹配,或者在 scdr 中直接跳至 end 处结束
:next
if "%2"=="Z" goto end
shift
goto SCDR
:end
ff| 欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/) | Powered by Discuz! 2.5 |