【问题标题】:can't get my .bat file to exit loop and go to a menu无法让我的 .bat 文件退出循环并转到菜单
【发布时间】:2013-08-23 03:50:58
【问题描述】:

因此,我创建了一个 .bat 文件,用于检查一系列标准服务器以查看它们是否已启动,并且我想在完成后根据结果创建选项。批次运行良好,直到我输入菜单。哈普?

@echo off
:top
cd\
cls
SET site=%1
SET cc=%2
if "%site%" equ "" set /P site=Site Number:&SET /P cc=Country Code (US if left blank):
if [%cc%]==[] set cc=us
echo.

:startloop
set #=%site%
:subloop
set site=s0%site%

echo Checking %site%.%cc%
echo.

for %%i in (saps01 saps02 vsrv01 vsrv02) do call :main %%i
echo.
goto end


:main
set sys=%1.%site%.%cc%
set state=down
ping -n 1 -w 2000 %sys% | findstr "Reply" >Nul
if %errorlevel% equ 0 set state=up
if %state% equ "down" goto main2

:main2
echo %1 is %state%


goto end

:end

set /p menu=Select an option:

echo 1) option 1
echo 2) option 2

if %menu%=1 echo 1
if %menu%=2 echo 2

【问题讨论】:

  • 请详细说明问题所在。 会发生什么,这与您的预期有何不同?
  • 您的菜单输入处于调用过程的中间 - 这一切似乎有点笨拙。是否要检查多个服务器是否在线,如果它们都在线则继续?或者...

标签: loops batch-file menu break


【解决方案1】:

我会将set 命令移到选项标题之后并使用== 而不是=

echo 1) option 1
echo 2) option 2

set /p menu=Select an option:

if %menu%==1 echo 1
if %menu%==2 echo 2

【讨论】:

    【解决方案2】:

    我已经修改了您的代码以简化它 - 看看它是否对您有帮助:

    @echo off
    :top
    cd\
    cls
    SET "site=%1"
    SET "cc=%2"
    
    if "%site%" equ "" (
       set /P "site=Site Number: "
       set /P "cc=Country Code (US if left blank): "
    )
    if "%cc%"=="" set "cc=us"
    
    :startloop
    set #=%site%
    :subloop
    set site=s0%site%
    
    echo Checking %site%.%cc%
    echo.
    
    for %%i in (saps01 saps02 vsrv01 vsrv02) do (
    ping -n 1 -w 2000 %%i.%site%.%cc% >nul && (echo %%i is up) || (echo %%i is down)
    echo.
    )
    
    echo 1) option 1
    echo 2) option 2
    
    set /p "menu=Select an option: "
    
    
    if "%menu%"=="1" echo 1
    if "%menu%"=="2" echo 2
    
    goto :where?
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-23
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多