Я запускаю этот пакетный скрипт, который дает мне ошибку, описанную в заголовке

set /p ActiveMQpath=
ECHO.
if exist %ActiveMQpath%+"\InstallService.bat" (
    ECHO Installer found, starting with ActiveMQ installation. Please wait...
    cd %ActiveMQpath%
    CALL InstallService.bat
    ECHO ActiveMQ Service has been installed
    ECHO Attempting to start service... Please wait
    ECHO.
    timeout /t 5 /nobreak >nul
    ECHO.
    Set ServiceName=ActiveMQ
    goto StartService
        if %IsServiceRunning% =="TRUE" (
        start iexplore http://localhost:8161/
        ) else ( ECHO Service not running... 
        PAUSE)
    ) else (
    ECHO File not found, please try again
    goto ACTIVEMQ_WRONGPATH)

Я не знаю, что мне не хватает. Синтаксис показывает, что это должно быть правильно

if exist "filename" (
!do job!
) else ( 
!do other job!
)

Мой код даже не входит в первое условие IF

1 ответ1

1

У вас есть 2 проблемы в вашем командном файле.

Во-первых, вы вложили IF. Пакетные файлы не поддерживают вложенные операторы IF. Вам придется написать If сравнивать и, основываясь на его результатах, переходить в код с помощью goto. Таким образом, вы можете иметь свой вложенный IF.

Во-вторых, я обнаружил вероятную опечатку, которая вызывает первое, если не работает, даже если вложенное, если нет. В нем есть +, который увидит, существует ли путь с +. Если это не так, он выполнит остальное.

Но, учитывая, что вложенное if является серьезной ошибкой (пакет не распознает ее), поэтому вместо выполнения он останавливается до запуска сценария.

Вы хотите, чтобы ваш код выглядел примерно так:

    set /p ActiveMQpath=
    ECHO.
    if exist "%ActiveMQpath%\InstallService.bat" goto InstallerExists
    goto InstallerNotFound

:InstallerExists
    ECHO Installer found, starting with ActiveMQ installation. Please wait...
    cd %ActiveMQpath%
    CALL InstallService.bat
    ECHO ActiveMQ Service has been installed
    ECHO Attempting to start service... Please wait

    ECHO.
    timeout /t 5 /nobreak >nul
    ECHO.

    Set ServiceName=ActiveMQ
    goto StartService

    if "%IsServiceRunning%"=="TRUE" (
        start iexplore http://localhost:8161/
    ) else ( 
        ECHO Service not running... 
        PAUSE
    )
    goto end

:InstallerNotFound
    ECHO File not found, please try again
    goto ACTIVEMQ_WRONGPATH)

:StartService
    ::your code here, missing from snippet...
    goto end

:ACTIVEMQ_WRONGPATH
    ::your code here, missing from snippet...
    goto end

:end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .