首页新闻找找看学习计划

批处理奇葩现象,求大牛解答

-1
悬赏园豆:10 [待解决问题]

下面有两个bat,我要实现的操作是:用户选择1或2时都会弹出提示询问y/n?当输入y时才执行相应操作,奇怪的现象是bat1执行时,第一次运行时,选择操作后,输入y都不会执行相应操作,返回到主菜单,第二次输入时就可以正确获取到用户的输入。

bat2的写法就没有此现象,为什么呢?试了好久搞不懂,bat1中把用户输入的变量显示出来发现为空

 

bat1内容:

@echo off
:main
echo.
echo 请选择操作:
echo.
echo 1、捕获整个硬盘镜像(C、D、E盘)
echo.
echo 2、还原整个硬盘镜像(C、D、E盘)
echo.
echo 3、退出
echo.
set /p op=请输入操作编号,按回车执行:

if %op%==1 (
set /p answer=此操作会格式化整个硬盘是否继续,y/n?:
if "%answer%"=="y" (
echo -----------------------------------------------
echo 执行捕获整个硬盘镜像(C、D、E盘),请耐心等待
echo -----------------------------开始时间:%time%---
call U:\CaptureImages.bat
echo -----------------------------------------------
echo 捕获整个硬盘镜像(C、D、E盘)-完成时间:%time%--
echo -----------------------------------------------

goto main

)

if %op%==2 (
set /p yn=此操作会格式化整个硬盘是否继续,y/n?:
if "%yn%"=="y" (
echo -----------------------------------------------
echo 还原整个硬盘镜像(C、D、E盘),请耐心等待
echo -----------------------------开始时间:%time%---
call U:\ApplyImages.bat
echo -----------------------------------------------
echo 还原整个硬盘镜像(C、D、E盘)-完成时间:%time%--
echo -----------------------------------------------
)
goto main
)

if %op%==3 (
exit
)
if "%op%"=="command" (
goto EOF
)
goto main
:EOF

 

bat2内容:

@echo off
:main
echo.
echo 请选择操作:
echo.
echo 1、捕获整个硬盘镜像(C、D、E盘)
echo.
echo 2、还原整个硬盘镜像(C、D、E盘)
echo.
echo 3、退出
echo.


set /p op=请输入操作编号,按回车执行:

if "%op%"=="1" goto op1

if "%op%"=="2" goto op2

if "%op%"=="3" goto op3

if "%op%"=="command" goto other

goto main

:op1

set /p YesNoIn=此操作覆盖原有的镜像备份,是否继续,y/n?:

if "%YesNoIn%"=="y" (
echo -----------------------------------------------
echo 执行捕获整个硬盘镜像(C、D、E盘),请耐心等待
echo -----------------------------开始时间:%time%---
call U:\CaptureImages.bat
echo -----------------------------------------------
echo 捕获整个硬盘镜像(C、D、E盘)-完成时间:%time%--
echo -----------------------------------------------
)
goto main

:op2

set /p yn=此操作会格式化整个硬盘,原有数据会丢失,是否继续,y/n?:
if "%yn%"=="y" (
echo -----------------------------------------------
echo 还原整个硬盘镜像(C、D、E盘),请耐心等待
echo -----------------------------开始时间:%time%---
call U:\ApplyImages.bat
echo -----------------------------------------------
echo 还原整个硬盘镜像(C、D、E盘)-完成时间:%time%--
echo -----------------------------------------------
)
goto main


:op3
exit

:other

碎心炼心的主页 碎心炼心 | 初学一级 | 园豆:192
提问于:2017-07-05 10:29
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册