批处理文件中的菜单

时间:2013-10-01 21:04:36

标签: windows batch-file menu

我通常不会创建批处理文件,因为我只需要在运行框或命令提示符下键入我需要的内容,但我正在尝试创建一个只是让我访问Windows中的基本实用程序并检查事物(我真的不需要它,但我想我父亲会觉得它很有帮助)。我对python很熟悉(但很新)所以如果使用python这些东西是一个更好的选择我可以做到这一点,但我认为批处理是做这么简单的事情的最好方法。问题出在我的菜单上。我认为由于我的菜单,它会在执行所选命令之前循环执行所有命令。任何有关此方面的帮助都将完全被理解,批处理脚本位于下面的代码框中。

echo off
:menu
echo This is a simple cleanup and repair utility. Please select an option:
echo 1 - Check the hard disk c:\ for errors and inconsistancies. 
echo 2 - Renew the IP address 
echo 3 - View IP Address information
echo 4 - Check internet connection  by pinging http://www.google.co.uk/
echo 5 - Start disk cleanup utility
echo 6 - ping 192.168.0.1
echo 7 - ping 192.168.1.1
echo 8 - Open notepad
choice /n /c:12345678 /M "Choose an option (1-8) "
IF ERRORLEVEL == 1 GOTO CHKDSK
IF ERRORLEVEL == 2 GOTO RENEW
IF ERRORLEVEL == 3 GOTO DISPLAYIP
IF ERRORLEVEL == 4 GOTO PINGGOOGLE
IF ERRORLEVEL == 5 GOTO CLEANMGR
IF ERRORLEVEL == 6 GOTO PING0
IF ERRORLEVEL == 7 GOTO PING1
IF ERRORLEVEL == 8 GOTO STARTNOTE
:CHKDSK
CHKDSK C:
PAUSE
goto menu
:RENEW
IPCONFIG /RENEW
PAUSE
goto menu
:DISPLAYIP
IPCONFIG /ALL
PAUSE
goto menu
:PINGGOOGLE
PING HTTP://WWW.GOOGLE.CO.UK/
PAUSE
goto menu
:CLEANMGR
CLEANMGR
PAUSE
goto menu
:PING0
PING 192.168.0.1
PAUSE
goto menu
:PING1
PING 192.168.1.1
PAUSE
goto menu
:STARTNOTE
START NOTEPAD
PAUSE
goto menu

3 个答案:

答案 0 :(得分:1)

将ErrorLevel部分更改为

IF %ERRORLEVEL%==1 GOTO CHKDSK
IF %ERRORLEVEL%==2 GOTO RENEW
IF %ERRORLEVEL%==3 GOTO DISPLAYIP
IF %ERRORLEVEL%==4 GOTO PINGGOOGLE
IF %ERRORLEVEL%==5 GOTO CLEANMGR
IF %ERRORLEVEL%==6 GOTO PING0
IF %ERRORLEVEL%==7 GOTO PING1
IF %ERRORLEVEL%==8 GOTO STARTNOTE
goto menu

请注意,if命令比较对空间敏感,因此“0”==“0”将不相等。

答案 1 :(得分:1)

错误级别有点搞笑。当你这样比较时,它实际上会检查数字是否小于或等于。因此,为了使其以当前的方式工作,您需要反向订购测试。

另一种方法是使用环境变量:

if "%errorlevel%"=="4" goto :PINGGOOGLE

在所有测试之后放置goto :menu通常是个好主意,以防万一没有测试通过。例如,如果用户按 Ctrl-C ,则错误级别为零。在您的代码中(修复测试后),它将落到:CHKDSK部分。

答案 2 :(得分:1)

如果您根本不测试错误级别值,则可以使用更简单的方法,但只需使用组装goto命令多个目的地。为了使此方法有效,必须更改标签,使其包含errorlevel值。

echo off
:menu
echo This is a simple cleanup and repair utility. Please select an option:
echo 1 - Check the hard disk c:\ for errors and inconsistancies. 
echo 2 - Renew the IP address 
echo 3 - View IP Address information
echo 4 - Check internet connection  by pinging http://www.google.co.uk/
echo 5 - Start disk cleanup utility
echo 6 - ping 192.168.0.1
echo 7 - ping 192.168.1.1
echo 8 - Open notepad
choice /n /c:12345678 /M "Choose an option (1-8) "
GOTO LABEL-%ERRORLEVEL%

:LABEL-1 CHKDSK
CHKDSK C:
PAUSE
goto menu
:LABEL-2 RENEW
IPCONFIG /RENEW
PAUSE
goto menu
:LABEL-3 DISPLAYIP
IPCONFIG /ALL
PAUSE
goto menu
:LABEL-4 PINGGOOGLE
PING HTTP://WWW.GOOGLE.CO.UK/
PAUSE
goto menu
:LABEL-5 CLEANMGR
CLEANMGR
PAUSE
goto menu
:LABEL-6 PING0
PING 192.168.0.1
PAUSE
goto menu
:LABEL-7 PING1
PING 192.168.1.1
PAUSE
goto menu
:LABEL-8 STARTNOTE
START NOTEPAD
PAUSE
goto menu