2016-02-09 103 views
0

所以我想建立一个菜单子菜单,我可以使用简单的东西,如打开默认路由器地址,打开控制面板,网络连接等,第一个子菜单的作品,第二个子菜单,无论你选择什么选项,它关闭命令提示符,我看不到语法错误,代码没有完成,所以有未完成的菜单,我不是一个精明的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 

回答

1

你的问题是这样的一行:

IF %M%==1 

有了比较之后什么都没有,这是一个语法错误,并导致CMD错误解析您的批处理文件,并中止。要修复,请在%M%==1之后输入命令,或者直接删除该行。

作为一个比较普遍的调试笔记,请在调试时从文件顶部删除@echo off。如果遇到这样的简单语法错误,只要不禁用文件顶部的所有调试信息,CMD就会向您显示正确为问题所在,。当您将脚本释放到生产环境时,可以禁用回显。

+0

太棒了!谢谢,还有,我如何从批处理文件执行批处理?在我的submenu_2我想执行另一个批处理文件,但我得到一个错误,说这不是一个公认的命令,我使用调用命令,我应该使用其他任何东西? – Wolf

+0

nvm,显然bat文件不能有空格或下划线,当我将名称更改为一个简单的名称并且没有空格时,它可以工作 – Wolf

+2

@Wolf - 您也可以将名称与空格放在引号中。 – SomethingDark