所以我正在尝试构建一个带有子菜单的小菜单,我可以用它来处理简单的东西,例如打开默认路由器地址,打开控制面板,网络连接等,第一个子菜单工作,第二个子菜单,不管是什么你选择的选项,它关闭命令提示符,我看不到语法错误,代码没有完成所以有未完成的菜单,我不是一个精明的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
答案 0 :(得分:1)
你的问题就在这一行:
IF %M%==1
比较后没有任何内容,这是一个语法错误,导致cmd错误解析批处理文件,并中止。要修复,请在%M%==1
之后输入命令,或者只删除该行。
作为更一般的调试说明,请在调试时从文件顶部删除@echo off
。如果您遇到这样的简单语法错误,只要您没有禁用文件顶部的所有调试信息,CMD就会向您显示完全问题所在的 。将脚本发布到生产环境时,可以禁用echo。