如何使批处理脚本中的“输入”成为无效选项?

如何使批处理脚本中的“输入”成为无效选项?

我希望“输入”无效,并重申可接受的回应。

echo.                     Do you want to root your Nexus 5?
echo.                 -----------------------------------------
echo.
echo.
echo. Y. Red  Pill......
echo. ----------------------------------------
echo.
echo      or
echo.
echo. N. Blue Pill......
echo. ----------------------------------------
echo.
set /p root="  Red Pill or Blue Pill?:  "

    if %root%==Y (root\run.bat)
    if %root%==N (exit)
    if %root%==y (root\run.bat)
    if %root%==n (exit)

这是 Windows,32 位。

答案1

您可以使用标签和 Goto 来创建子程序。

尝试这样的操作:

echo.                     Do you want to root your Nexus 5?
echo.                 -----------------------------------------
echo.
echo.
echo. Y. Red  Pill......
echo. ----------------------------------------
echo.
echo      or
echo.
echo. N. Blue Pill......
echo. ----------------------------------------
echo.
:prompt
set /p root="  Red Pill or Blue Pill?:  "

if "%root%"=="Y" goto runBat
if "%root%"=="N" goto exit
if "%root%"=="y" goto runBat
if "%root%"=="n" goto exit
if "%root%"=="" goto prompt

:runBat    
root\run.bat
goto exit

:exit

如果您想使 Y 或 N(以及 y 或 n)以外的任何内容无效(而不仅仅是 Enter),那么只需删除该if "%root%"==""部分,只留下goto prompt该行。

答案2

以下是如何在脚本中创建这样的菜单JP Software 的 TCC/LE

@echo 关闭
:: 药丸.btm
文本
                     您想要 root 您的 Nexus 5 吗?
                 -----------------------------------------


 Y.红色药丸......
 ----------------------------------------

     或者

 N.蓝色药丸......
 ----------------------------------------
结束语
inkey /k"YNRB" ` `红色药丸还是蓝色药丸?:` ` %%root
开关“%root%”
案例“Y”或“R”
    调用 root\运行
案例 "N" 或 "B"
    出口
端开关

选项/k限制inkey了哪些按键是可接受的,从而消除了在给出无效选择时循环并打印额外提示的需要。该switch命令进行不区分大小写的比较,并且还支持.OR.

当然,TCC(及其前身)一直都可以轻松地通过命令脚本呈现更好的用户界面。以下是上述内容的改进版本:

@echo 关闭
:: 药丸.btm
cls 白色底蓝色
drawbox 1 10 6 70 2 绿色黑色填充缩放阴影
drawhline 3 12 57 1 黑底绿线
scrput 2 24 黑底白色 您想要 root 您的 Nexus 5 吗?
scrput 4 34 红色黑色 Y. 红色药丸
scrput 5 34 蓝色黑色 N. 蓝色药丸
drawbox 10 39 12 41 2 黑色底色上绿色填充阴影
屏幕 11 40
输入键/k“YNRB”%%root
开关“%root%”
案例“Y”或“R”
    cls 黑底白字
    scrput 4 34 红色黑色 Y. 红色药丸
    屏幕 11 0
    调用 root\运行
案例 "N" 或 "B"
    cls 黑底白字
    scrput 5 34 蓝色黑色 N. 蓝色药丸
    屏幕 11 0
    出口
端开关

它只长了一行,但却有相当多的改进,其中最重要的是所选“药丸”的彩色显示。

但是,Windows 中的命令脚本没有必要具有文本用户界面。TCC 还可以制作图形版本,只需 3 行代码:

@echo 关闭
msgbox /2 /q continueabort“红色药丸,蓝色药丸”即将 root 你的 Nexus 5
如果 %_? == 15 调用 root\run

call顺便说一下,请注意 的使用。这是techie007脚本中的一个错误。☺

而且已经过去了 25 年多。我们不必使用command.bat扩展名。微软从 OS/2 版本 1 开始cmd就一直在使用。您会注意到我在上面使用了 TCC/LE — 这是编写适用于 4NT、4DOS 和 4OS2 的脚本时养成的习惯。.cmd.btm.btm

进一步阅读

相关内容