我需要 "If not defined (item) goto (item)" 代码的批量帮助

I need help in batch with the "If not defined (item) goto (item)" code

我正在用批处理创建命令提示符的模仿,每次我在批处理文件中输入一个未知的命令,比如 "JABSD" 它只是关闭,即使我已经把

if not defined (item) goto (item) 

命令。这是代码:

@echo off
color 0a
echo Microbach Bachdos [version 9.9.bachcmd0a2pro]
echo Copybach (C) 1700 Microbach Corporbachtion. All Bachs reserved.
:commandbach
echo .
set "bachcmd="
set /p "bachcmd= C:\Bachusers\BACH)"
if not defined bachcmd goto invalidbcommand
REM error corrections
if /i "%bachcmd%"==" " (
:invalidbcommand
echo '%bachcmd% is not recognized as an internal or external command, operable program or .bach file.
goto commandbach
)
if /i "%bachcmd%"=="ACTBACH" (
echo Please use a valid number
echo ACTBACH symphony_number
)
REM commands
if /i "%bachcmd%"=="help" (
echo HELP                             Displays a list of Bach commands.
echo ACTBACH symphony_number          Plays the symphony number.
goto commandbach
)
if /i "%bachcmd%"=="ACTBACH 1" (
start https://www.youtube.com/watch?v=x7JZB-lC_Hw
goto commandbach
)
if /i "%bachcmd%"=="ACTBACH 2" (
REM start (insert URL)
echo Cannot find the symphony number
goto commandbach
)
pause

IF NOT DEFINED 只检查变量的定义。在你的情况下,它永远是真的,因为有人输入了一个值。

要完成您想要的,您需要将此行放在脚本的底部:

GOTO commandbach

这实际上会创建一个无限循环(直到用户关闭 window 或按 Ctrl+C)。您可能需要考虑添加一个 "exit" 命令,以便用户可以输入一个命令来退出您的程序。