『楼 主』:
 choice选择后执行顺序总是不对?附批处理全文
 
使用 LLM 解释/回答一下
  
做了一个启动的批处理,希望能根据选择从相应盘中恢复克隆文件,但是不管选择1还是2还是3,总是执行第一个,也就是下文的:_restore4,请指教! 
 
------------------------- 
@echo off 
 
rem 这里设置环境和默认加载项 
rem 加载smartdrive 
%RAMDRIVE% 
sm 
 
rem 菜单部分 
rem 显示菜单,choice后判断选择的序号来作处理。errorlevel 0是break后的处理 
 
:_top 
cls 
%RAMDRIVE% 
lh TW /np /n3 >nul 
 
echo.               数 据 恢 复 
echo. 
echo 1  使用 第1硬盘 第2分区(D盘) 根目录下的SYSBAK.GHO 恢复,覆盖C盘 
echo 2  使用 第1硬盘 第3分区(E盘)根目录下的SYSBAK.GHO 恢复,覆盖C盘 
echo 3  使用 第1硬盘 第4分区(F盘) 根目录下的SYSBAK.GHO 恢复,覆盖C盘 
echo. 
echo H  帮 助 
echo Q  退 出 菜 单 (使用menu再次显示本菜单) 
echo --------------------------------------------------------- 
choice "请输入功能代码(123HQ): ",123HQ 
 
if errorlevel 5 goto _exit 
if errorlevel 4 goto _help 
 
if errorlevel 3 goto _restore4 
if errorlevel 2 goto _restore3 
if errorlevel 1 goto _restore2 
if errorlevel 0 goto _close 
 
 
:_cdrom 
rem 加载光驱,完成后暂停查看结果 
cls 
rem TW /Q>nul 
lh device cd.sys /D:SHSU-CDH 
lh mscdex /D:SHSU-CDH 
pause 
goto _top 
 
:_mouse 
rem 加载鼠标 
cls 
rem TW /Q>nul 
lh mouse /w 
lh MOUSCLIP /m 
pause 
goto _top 
 
:_help 
rem 帮助 
cls 
lh read.com menu2.txt 
goto _top 
 
 
rem -------------------------------------- 
 
:_restore4 
rem 从4恢复,出错提示并返回菜单。正确重新启动 
cls 
echo 以下操作将从F盘的备份恢复,删除C盘所有数据!!! 
echo 恢复完成后,将重新启动。 
choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn 
if errorlevel 2 goto _top 
GHOST -clone,mode=pload,src=1:4\sysbak.GHO:1,dst=1:1 -sure -rb 
if errorlevel 1 goto _reserror 
goto _REstart 
 
 
:_restore3 
rem 从3恢复,出错提示并返回菜单。正确重新启动 
cls 
echo 以下操作将从E盘的备份恢复,删除C盘所有数据!!! 
echo 恢复完成后,将重新启动。 
choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn 
if errorlevel 2 goto _top 
GHOST -clone,mode=pload,src=1:3\sysbak.GHO:1,dst=1:1 -sure -rb 
if errorlevel 1 goto _reserror 
goto _REstart 
 
:_restore2 
rem 从2恢复,出错提示并返回菜单。正确重新启动 
cls 
echo 以下操作将从D盘的备份恢复,删除C盘所有数据!!! 
echo 恢复完成后,将重新启动。 
choice "是否开始恢复操作? 按Y确定,按N取消操作: ",yn 
if errorlevel 2 goto _top 
GHOST -clone,mode=pload,src=1:2\sysbak.GHO:1,dst=1:1 -sure -rb 
if errorlevel 1 goto _reserror 
goto _REstart 
 
 
rem -------------------------------------- 
:_ghost 
ghost 
goto _TOP 
 
:close 
rem 关闭的处理,退出所有加载项 
TW /np /n3 >nul 
echo. 
echo. 
echo. 
echo. 
echo.         在命令行下,输入 menu 返回此菜单!!! 
echo. 
echo  按任意键继续.......... 
pause        
 
tw /q >nul 
MOUSCLIP /u 
mouse /u 
cls 
goto ext 
 
 
:_bakerror 
rem 备份出错提示,返回菜单 
call w.bat box @menu.bat:scx_bf 
:scx_bf 
***************************************************************** 
 
        发生错误,可能是硬盘没有找到。请按【确定】返回菜单。 
 
***************************************************************** 
                                                [ 确定(&O) ] 
:: 
goto _top 
 
:_reserror 
rem 恢复出错提示,返回菜单 
call w.bat box @menu.bat:scx_hf 
:scx_hf 
***************************************************************** 
 
        发生错误,可能文件不存在。请按【确定】返回菜单。 
 
***************************************************************** 
                                                [ 确定(&O) ] 
:: 
goto _top 
 
:_REstart 
rem 重新启动计算机 
restart.BAT 
 
:_exit 
 
    
 
  
 |