Batch file 我需要一批人来帮我;如果未定义(项目)转到(项目)“;密码

Batch file 我需要一批人来帮我;如果未定义(项目)转到(项目)“;密码,batch-file,if-statement,undefined,Batch File,If Statement,Undefined,我正在用批处理创建命令提示符的仿制品,每次我在批处理文件中放入一个未知的命令,比如“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. :co

我正在用批处理创建命令提示符的仿制品,每次我在批处理文件中放入一个未知的命令,比如“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

如果未定义
仅检查变量的定义。在您的情况下,它总是正确的,因为有人输入了一个值

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

GOTO commandbach

这实际上会创建一个无休止的循环(直到用户关闭窗口或按下Ctrl+C)。你可能想考虑添加一个“退出”命令,这样用户就可以输入一个命令退出你的程序。