Batch file 批处理菜单和子菜单

Batch file 批处理菜单和子菜单,batch-file,syntax,Batch File,Syntax,所以我尝试用子菜单构建一个小菜单,我可以用它来做一些简单的事情,比如打开默认路由器地址,打开控制面板,网络连接等等,第一个子菜单工作,第二个子菜单,无论你选择什么选项,它都会关闭命令提示符,我看不到语法错误,代码还没有完成,所以有未完成的菜单,我不是一个与cmd命令,所以任何帮助是感激,谢谢你的悟性 @ECHO off :start CLS ECHO Welcome, %USERNAME%! echo. echo Main Menu echo. echo 1. Network U

所以我尝试用子菜单构建一个小菜单,我可以用它来做一些简单的事情,比如打开默认路由器地址,打开控制面板,网络连接等等,第一个子菜单工作,第二个子菜单,无论你选择什么选项,它都会关闭命令提示符,我看不到语法错误,代码还没有完成,所以有未完成的菜单,我不是一个与cmd命令,所以任何帮助是感激,谢谢你的悟性

 @ECHO off 

:start 
CLS 
ECHO Welcome, %USERNAME%! 
echo. 
echo Main Menu
echo. 
echo 1. Network Utilities
echo 2. Display Submenu 2 
echo 3. Display Submenu 3 
echo 4. Shutdown
echo 5. Restart
echo 6. Log Off
echo 7. Exit this Menu

set /p choice="Enter your choice: " 
if "%choice%"=="1" goto submenu_1 
if "%choice%"=="2" goto submenu_2 
if "%choice%"=="3" goto submenu_3 
if "%choice%"=="4" shutdown -t 20
if "%choice%"=="5" shutdown -r
if "%choice%"=="6" shutdown -l
if "%choice%"=="7" goto bail 

:submenu_1 
echo Submenu_1 
ECHO    
ECHO 1 - Open Router Config 192.168.0.1
ECHO 2 - Open Router Config 192.168.100.1
ECHO 3 - Open Router Config 192.168.254.1
ECHO 4 - Show Network Config
ECHO 5 - Open Control Panel
ECHO 6 - Open Network And Sharing Center
ECHO 7 - Open Add or Remove Apps
ECHO 8 - Show All Network Devices
ECHO 0 - Back to Main Menu
ECHO.
SET /P M=Type 1, 2, 3, 4, 5, 6, 7, 8, 0, then press ENTER:
IF %M%==1 start HTTP://192.168.0.1
IF %M%==2 start HTTP://192.168.100.1
IF %M%==3 start HTTP://192.168.254.1
IF %M%==4 ipconfig /all
IF %M%==5 start control
IF %M%==6 start control /name Microsoft.NetworkAndSharingCenter
IF %M%==7 start appwiz.cpl
IF %M%==8 NET VIEW
IF %M%==0 goto start
goto submenu_1


:submenu_2 
echo Submenu_2 
ECHO    
ECHO 1 - Show Disk Space
ECHO 2 - Disk Defrag and Cleanup
ECHO 0 - Back to Main Menu
ECHO.
SET /P M=Type 1, 2, 0, then press ENTER:
IF %M%==1 
IF %M%==2 call Disk_Defrag_and_Cleanup.bat
IF %M%==0 goto start
goto submenu_2


:submenu_3 
echo Submenu_3 
set /p menu_choice="Would you like to run this submenu again (Y) ? " 
if "%menu_choice%"=="Y" goto submenu_3 

:bail

您的问题是这一行:

IF %M%==1 
比较之后没有任何内容,这是一个语法错误,导致cmd在分析批处理文件时出错,并中止。若要修复此问题,请在
%M%==1
之后放置一个命令,或者简单地删除该行


作为更一般的调试说明,请在调试时从文件顶部删除
@echo off
。如果遇到这样一个简单的语法错误,只要不禁用文件顶部的所有调试信息,CMD就会准确地显示问题所在。当您将脚本发布到生产环境时,您可以禁用echo。

太棒了!另外,谢谢,我如何从批处理文件执行批处理?在我的子菜单_2上,我试图执行另一个批处理文件,但我得到一个错误,说这不是一个可识别的命令,我正在使用call命令,还有什么我应该使用的吗?nvm,显然bat文件不能有空格或下划线,当我将名称更改为没有空格的简单名称时,信息技术works@Wolf-您也可以在引号中加空格。