批处理程序打造简易交互界面菜单
在日常工作中,我们编写批处理程序往往会遇到须要制作菜单的情况,而DOS没有专门的图形界面库,所以这就须要我们手动制作一个菜单,然后根据用户输入的不同代码,运行菜单上对应的命令。今天就用一个最简单的案例来给大家讲一下如何在DOS 窗口中打造一个迷你菜单,并实现和用户的简单交互。
【基本思路】
使用set的/p模式接受用户输入的指令代号,然后使用if配合goto语句,把流程导入到不同代号对应的命令分支,并运行它们,运行结束后,再通过goto返回主菜单,直到用户输入Q或q为止,则退出程序。
【分块代码介绍】
Part No.1菜单文本部分:
@echo off
cls
title 工具触发器
:menu
cls
color 0A
echo.
echo =====================================
echo 请选择需要进行的操作代码,Enter键确认...
echo =====================================
echo.
echo 1.打开计算器…
echo.
echo 2.打开屏幕键盘…
echo.
echo 3.打开控制面板…
echo.美食食谱网页界面ui设计灵感
echo 4.打开程序和功能面板…
echo.
echo Q.退出
echo.
注:
1.cls表示清屏,即每一次返回主菜单以后,都要把以前运行的历史记录产生的内容清除掉;
3.title用于设置窗口标题栏的文字内容;
5.整个菜单的外观文本部分,封装为一个标签menu,作用是配合后续的goto语句,当每执行完一个分支,就会返回到menu主菜单,等待用户的下一次选择。
Part No.2 分支命令运行和流程控制对应的代码部分
:choice
set /p choice=请输入选择代码:
if /i "%choice%"=="1" goto calculator
if /i "%choice%"=="2" goto keyboard
if /i "%choice%"=="3" goto controlpanel
if /i "%choice%"=="4" goto appwizard
if /i "%choice%"=="Q" goto end
echo 选择无效,请重新输入
pause
goto choice
:calculator
calc
pause
goto menu
:keyboard
osk
pause
goto menu
:controlpanel
control
pause
goto menu
:appwizard
appwiz.cpl
pause
goto menu
:end
exit
注:
1.choice封装的部分,主要用于接收用户从键盘输入的分支代码,并通过其下的多个if-goto语句,导入到代码对应的分支中去运行相应的代码;
2.choice部分下的if语句使用了/i模式,表示忽略大小写,例如:输入Q或q时,二者是等效的;
3.calculator,keyboard,controlpanel,appwizard,end这五个封装的部分,主要对应到choice部分各分支对应的分支所运行的详细代码;
4.如果在choice部分,用户输入的内容不满足任意一个分支的代码,则直接goto到choice部分开头,让用户重新输入分支代码,再继续下一轮判断,如此往复。
⑤注意:“set /p choice=请输入选择代码:”这一句中的“=”前面或后面都不能加空格.否则代码无法正常运行!
【运行效果预览】
我们把代码展示部分的代码粘贴进入一个新建的文本文档中,
然后把后缀名改为.bat,双击运行它打开即可看到如下界面:
我们随意选择一个分支的代码,比如:
我们选择4,然后按下Enter键,
就可以打开“程序和功能面板”啦!
再次回到DOS窗口时,它会默认自动返回到选择操作代码的这个步骤,可以继续输入代码运行对应的操作,直到用户输入Q或q时,程序退出。
【代码总览】
@echo off
cls
title 工具触发器
:menu
cls
color 0A
echo.
echo ===================================== echo 请选择需要进行的操作代码,Enter键确认... echo ===================================== echo.
echo 1.打开计算器…
echo.
echo 2.打开屏幕键盘…
echo.
echo 3.打开控制面板…
echo.
echo 4.打开程序和功能面板…
echo.
echo Q.退出
echo.
:choice
set /p choice=请输入选择代码:
if /i "%choice%"=="1" goto calculator
if /i "%choice%"=="2" goto keyboard
if /i "%choice%"=="3" goto controlpanel
if /i "%choice%"=="4" goto appwizard
if /i "%choice%"=="Q" goto end
echo 选择无效,请重新输入
pause
goto choice
:calculator
calc
pause
goto menu
:keyboard
osk
pause
goto menu
:controlpanel