您的位置:首页 > 其它

batch实现交互式问询

2016-07-01 12:26 218 查看
需求: 在一个batch脚本里需要用户确认某个信息是否正确。如果正确,那么输入yes,继续后面的工作;如果不正确,输入no,然后提示用户输入正确的值,并读入这个值赋给变量,然后继续后面的工作;如果输入既非yes又非no,提示用户重新输入yes或no,然后再回到前面的判断。

实现:

set VAR=123456

current VAR is %VAR%

echo If confirmed, please input y;otherwise input n: (y/n)

echo off

set /p CHECK_VAR=

echo off

IF not "%CHECK_VAR%" == "y" (

 IF not "%CHECK_VAR%" == "n" (

 echo Invalid input, try again.

 echo If VAR value is confirmed, please input y ;otherwise input n:(y/n)

 echo off

 set /p CHECK_VAR=

 )

)

IF "%CHECK_VAR%" == "y" goto Unchanged

IF "%CHECK_VAR%" == "n" goto Input_VAR

:Unchanged

echo %VAR% is not changed

goto Continue

:Input_VAR

echo Please input the new value of VAR:

echo off

set /p VAR=

goto Continue

:Continue

common_actions

事后分析:因为对batch不熟悉,所以不知道这是不是唯一的方法。一开始没有想到把common_action定义成一个label,即没有goto Continue那一句。结果每次执行完Unchanged lable的内容紧接着就执行Input_VAR的,没有实现跳转。后来在网上找了一个类似的例子,才解决了这个问题。希望以后熟悉batch了,能优化这个方案。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  batch 脚本