Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在批处理中,我的菜单将不起作用_Batch File_Input - Fatal编程技术网

Batch file 在批处理中,我的菜单将不起作用

Batch file 在批处理中,我的菜单将不起作用,batch-file,input,Batch File,Input,我试图用批处理创建一个简单的菜单系统,但我不知道是“转到”还是输入部分搞错了。谢谢你的帮助 @echo off cls echo ==============MENU============== echo 1. echo 2. echo 3. echo choose. set/p "menuInput" if %menuInput%==1 (goto :1) if %menuInput%==2 (goto :2) if %menuInput%==3 (goto :3) else ec

我试图用批处理创建一个简单的菜单系统,但我不知道是“转到”还是输入部分搞错了。谢谢你的帮助

@echo off
cls


echo ==============MENU==============
echo 1.
echo 2.
echo 3.

echo choose.
set/p "menuInput"



if %menuInput%==1 (goto :1)
if %menuInput%==2 (goto :2)
if %menuInput%==3 (goto :3)
else echo error
:1 echo 1
:2 echo 2
:3 echo 3
设置错误/p

尝试设置/p菜单输入=

  • set/p
    的语法不正确。使用
    set/?
    阅读帮助

  • (goto:1)
    周围的括号不会给你买任何东西

  • else
    在语法上既不正确(必须与
    if
    在同一逻辑行上),又没有用处(因为如果
    if
    成功,控制将传递给
    :3

  • 您缺少一组
    exit/b
    goto:eof
    ,以防止通过选项失去控制

  • 正如@AlexP所提到的,您的
    set/p
    语法不正确

    您需要使用
    设置
    /p用户输入=

    而不是
    set/p
    ,并且在
    变量
    名称后应该有
    =
    符号

    设置/p变量=[promptString]

    阅读更多有关使用和的信息

    (编辑-删除错误检查的误导性代码)

    从菜单中选择选项时,使用
    Choice
    SET/p
    IF Else
    菜单进行样本批次

    示例1使用IF-ELSE(输入错误检查)

    示例2使用选择命令(无错误输入检查)


    好的,我现在更新了你的代码,应该可以了

    代码在这里

    @echo off
    :menu
    cls
    title menu 
    echo ==============MENU==============
    echo 1.
    echo 2.
    echo 3.
    set /p menuInput=? 1-3
    if %menuInput% EQU 1 goto 1
    if %menuInput% EQU 2 goto 2
    if %menuInput% EQU 3 goto 3
    goto error
    :1 
    echo1
    pause
    :2 
    echo2
    pause
    :3 
    echo3
    pause
    :error
    echo error press 1-3
    pause>nul
    goto menu
    

    那是错误的语法!在命令提示窗口中键入
    set/?
    ,并仔细阅读帮助!缺少等号:
    set/P menuInput=
    (无需报价)。不要在变量名和
    =
    之间留空格,因为它会成为名称的一部分!根据我的经验,使用
    Set/P
    一点问题都没有,在使用选项/参数时,不需要在
    Set
    后面加空格;它只正确处理选项1,并在任何其他情况下标记错误。此外,在比较数字时,将/i开关包含在IF命令中也没有意义(不存在上/下数字…)
    @echo off
    
    ::Your Menu to choose from
    
    :menu
    cls
    echo ==============MENU==============
    echo 1.command menu item 1
    echo 2.command menu item 2
    echo 3.command menu item 3
    
    ::check and limit user input to selection
    choice /C 123 /N /M "Your Selection"
    
    IF "%ERRORLEVEL%"=="1" goto 1
    IF "%ERRORLEVEL%"=="2" goto 2
    IF "%ERRORLEVEL%"=="3" goto 3
    
    :1
    echo command 1
    pause>nul
    goto menu
    :2
    echo command 2
    pause>nul
    goto menu
    :3
    echo command 3
    pause>nul
    goto menu
    
    @echo off
    :menu
    cls
    title menu 
    echo ==============MENU==============
    echo 1.
    echo 2.
    echo 3.
    set /p menuInput=? 1-3
    if %menuInput% EQU 1 goto 1
    if %menuInput% EQU 2 goto 2
    if %menuInput% EQU 3 goto 3
    goto error
    :1 
    echo1
    pause
    :2 
    echo2
    pause
    :3 
    echo3
    pause
    :error
    echo error press 1-3
    pause>nul
    goto menu