我创建了一个批处理文件菜单(名为“menu.bat”),其中列出了链接到各自批处理文件的三个子菜单,如下所示:
- 网络功能(networkfunctions.bat)
- 控制面板(controlpanel.bat)
- 配件(accessories.bat)
每个选择(即 1、2、3)的批处理文件名在括号中。
我将所有这些 .bat 文件保存在我的计算机上,目录结构如下:
目录:\批处理
以下是在 menu.bat 中找到的脚本:
回音关闭 标题 主菜单 ::菜单.bat ::包含主批处理文件菜单 分类 :菜单 回声。 回声 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º 我的名字在这里 ÄÄ 主菜单 º echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ echo º 1. 网络功能 º 回声º 2. 控制面板º 回声º 3. 配件º 回声º 4. 退出º echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 回声。 回声。 set /p input="选择数字:" 如果 %input% ==4 转到退出 如果 %input% ==3 转到配件 如果 %input% ==2 转到控制面板 如果 %input% ==1 转到网络功能 :网络功能 启动 c:\batch\networkfunctions.bat 暂停 转到菜单 :控制面板 启动 c:\batch\controlpanel.bat 暂停 转到菜单 :配件 启动 c:\batch\accessories.bat 暂停 转到菜单 :出口 出口
以下是network.bat中的脚本:
回音关闭 标题 网络功能 ::网络功能.bat ::包含用于 ::命令提示符 分类 :菜单 回声。 回声 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º 我的名字在这里 Ä 网络功能 º echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ 回声º 1. IPCONFIGº 回显 º 2. IPCONFIG /ALL º 回声º 3. NETSTATº 回声º 4. NSLOOKUPº 回声º 5. Telnetº 回声 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ echo º 6. 返回主菜单 º 回声º 7. 退出º 回声 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 回声。 回声。 set /p input="选择数字:" 如果 %input% ==7 转到退出 if %input% ==6 goto 返回主菜单 如果 %input% ==5 转到 Telnet 如果 %input% ==4 转到 NSLOOKUP 如果 %input% ==3 转到 NETSTAT 如果 %input% ==2 转到 IPCONFIG /ALL 如果 %input% ==1 转到 IPCONFIG :IP配置 启动 c:\windows\system32\ipconfig.exe 暂停 转到菜单 :IP配置/全部 启动 c:\windows\system32\ipconfig.exe \all 暂停 转到菜单 :网络状态 启动 c:\windows\system32\netstat.exe 暂停 转到菜单 :NSLOOKUP 启动 c:\windows\system32\nslookup.exe 暂停 转到菜单 :远程登录 启动 c:\windows\system32\telnet.exe 暂停 转到菜单 :返回主菜单 启动 c:\batch\menu.bat 暂停 转到菜单 :出口 出口
这是controlpanel.bat中的脚本:
回音关闭 标题控制面板 ::控制面板.bat ::包含相关控制面板小程序的菜单 分类 :菜单 回声。 回声 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º 我的名字在这里 Ä 控制面板 º echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ echo º 1. 配置管理器 º echo º 2. Internet 选项 º echo º 3. 网络连接 º echo º 4. 系统属性 º echo º 5. Windows 防火墙 º 回声 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ echo º 6. 返回主菜单 º 回声º 7. 退出º 回声 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 回声。 回声。 set /p input="选择数字:" 如果 %input% ==7 转到退出 if %input% ==6 goto 返回主菜单 如果 %input% ==5 转到 Windows 防火墙 如果 %input% ==4 转到系统属性 如果 %input% ==3 转到网络连接 如果 %input% ==2 转到 Internet 选项 如果 %input% ==1 转到配置管理器 :配置管理器 启动rundll32.exe shell32.dll,Control_RunDLL C:\WINDOWS\system32\CCM\SMSCFGRC.cpl 暂停 转到菜单 :互联网选项 启动rundll32.exe shell32.dll,Control_RunDLL c:\windows\system32\inetcpl.cpl 暂停 转到菜单 :网络连接 启动rundll32.exe shell32.dll,Control_RunDLL c:\windows\system32\ncpa.cpl 暂停 转到菜单 :系统属性 启动rundll32.exe shell32.dll,Control_RunDLL c:\windows\system32\sysdm.cpl 暂停 转到菜单 :Windows 防火墙 启动rundll32.exe shell32.dll,Control_RunDLL c:\windows\system32\firewall.cpl 暂停 转到菜单 :返回主菜单 启动 c:\batch\menu.bat 暂停 转到菜单 :出口 出口
以下是 accessories.bat 中的脚本:
回音关闭 标题 配件 ::附件.bat ::包含相关实用程序和应用程序的菜单 分类 :菜单 回声。 回声 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» echo º 我的名字在这里 Ä 配件 º echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ echo º 1. DOS 编辑 º echo º 2. 记事本 º echo º 3. 系统信息 º echo º 4. 系统还原 º 回声 ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ echo º 5. 返回主菜单 º 回声º 6. 退出º 回声 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 回声。 回声。 set /p input="选择数字:" 如果 %input% ==6 转到退出 如果 %input% ==5 转到返回主菜单 如果 %input% ==4 转到系统还原 如果 %input% ==3 转到系统信息 如果 %input% ==2 转到记事本 如果 %input% ==1 转到 DOS 编辑 :DOS 编辑 启动 c:\windows\system32\edit.com 暂停 转到菜单 :记事本 启动 c:\windows\system32\notepad.exe 暂停 转到菜单 :系统信息 启动 c:\program files\common files\microsoft shared\msinfo.exe 暂停 转到菜单 :系统还原 启动 c:\windows\System32\restore\rstrui.exe 暂停 转到菜单 :返回主菜单 启动 c:\batch\menu.bat 暂停 转到菜单 :出口 出口
问题
我可以成功执行 menu.bat。我可以看到三个选项。
- 网络功能
- 控制面板
- 配件
如果我选择“1”,我将进入“网络功能”子菜单。完美。
如果我选择“3”,我就会进入“配件”子菜单。完美。
如果我选择“4”,我将退出 Windows 命令行。完美。
问题是如果我选择“2”;它会出现以下错误:
系统找不到指定的批次标签 - 控制
驱动器标签随后从 c:\ 更改为 c:\batch。
奇怪的是,如果我在运行框中输入文件 c:\batch\controlpanel.bat,我可以执行它。它运行完美。
但是,如果我尝试通过 menu.bat 文件执行它,它就不会执行。
这是怎么回事?任何帮助都非常感谢。我快要完成这个课堂项目了。
先感谢您。
答案1
您将“Control Panel”拼写错误为“Contol_Panel”。
答案2
@Hello71 是正确的。下面直接说明了需要更改的内容。它与下划线没有任何关系。
echo off
title Main Menu
::menu.bat
::Contains main batch file menu
cls
:menu
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º MY NAME HERE ÄÄ Main Menu º
echo ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
echo º 1. Network Functions º
echo º 2. Control Panel º
echo º 3. Accessories º
echo º 4. Exit º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo.
set /p input="Select number: "
if %input% ==4 goto Exit
if %input% ==3 goto Accessories
if %input% ==2 goto Control Panel
if %input% ==1 goto Network Functions
:Network Functions
start c:\batch\networkfunctions.bat
pause
goto menu
:Contol Panel <<- It's spelled "Control" not "Contol"
start c:\batch\controlpanel.bat
pause
goto menu
:Accessories
start c:\batch\accessories.bat
pause
goto menu
:Exit
exit
其他一些建议:
测试变量的特定值时,应将两个参数都括在引号中,如下所示:
if '%input%'=='4' goto Exit
由于批处理命令处理器在解释命令之前会用变量的内容替换变量,因此如果%input%
由于某种原因变量为空或未定义,则可避免语法错误。这是一个值得养成的好习惯。
您也没有考虑到用户可能会输入除 1、2、3 或 4 之外的其他内容。因此,脚本中的结果是它将“落入”网络功能部分,这可能会令人困惑。如果与预期不符,您应该收到echo
错误消息并goto
返回输入语句。另一个好习惯。%input%