Batch file 使用选项查询服务状态的Bat文件

Batch file 使用选项查询服务状态的Bat文件,batch-file,Batch File,我使用此查询来检查服务的状态,并根据该状态提供选项,但我在错误部分遇到了一些问题。似乎只有在没有选择的情况下才有效。即使这样,它也只是第一次起作用。正如你所见,我有3个选项,但如果我选择选项4,它默认为选项1。请看一看,解释一下我遗漏了什么 @echo off ECHO Status of MGT System Manager Service Goto Welcome ECHO. :Welcome sc query MGTSM | findstr /i "STATE" E

我使用此查询来检查服务的状态,并根据该状态提供选项,但我在错误部分遇到了一些问题。似乎只有在没有选择的情况下才有效。即使这样,它也只是第一次起作用。正如你所见,我有3个选项,但如果我选择选项4,它默认为选项1。请看一看,解释一下我遗漏了什么

    @echo off

ECHO Status of MGT System Manager Service

Goto Welcome

ECHO.



:Welcome

sc query MGTSM | findstr /i "STATE"

ECHO What would you like to do?


ECHO 1. Start Service

ECHO 2. Stop Service

ECHO 3. Exit

set /p choice=Select your choice.

if '%choice%'=='' ECHO "%choice%" is not valid please try again. 

if '%choice%'=='1' goto Start Service

if '%choice%'=='2' goto Stop Service

if '%choice%'=='3' goto Exit

ECHO.



:Start Service

net start MGTSM

goto Welcome





:Stop Service

net stop MGTSM

goto Welcome



:Exit

exit
set/p不接触变量,如果不输入任何内容,只需输入即可。因此,您应该在执行以下操作之前删除变量:

:Welcome
....
set "choice="      //this deletes %choice%
set /p "choice=Select your choice: "
if '%choice%'=='1' goto StartService
if '%choice%'=='2' goto StopService
if '%choice%'=='3' goto Exit
REM this line is only reached, when all of the "IF ... GOTO"  above failed
echo not valid input: "%choice%"
goto welcome       
...

标签和转到空间有问题:转到开始服务将转到开始,忽略服务。与Labels::Start Service相同,标签为:Start,服务将被忽略。

我正在尝试,这意味着您已经为此做出了努力。你能提出你的问题来表明你自己在做这件事上的努力吗?还有,你在这里发布之前看到了吗?看到了。类型选择/?用于用户输入。我确实在第一期无法正确查询服务时对其进行了编辑。选择将条目限制为您指定的内容。输入命令提示符选项/c 123/m输入选项。如果输入4,计算机会发出蜂鸣音。