Obtendo um erro “Batch: (foi inesperado neste momento) quando tento executar meu script Batch

0

Estou executando este script em lote que está me dando o erro descrito no título

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)

Eu não sei o que estou perdendo. A sintaxe mostra que isso deve estar correto

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

Meu código nem entra na primeira condição IF

    
por user938644 29.08.2018 / 14:34

1 resposta

1

Você tem 2 problemas no seu arquivo de lote.

O primeiro é que você aninhou IFs. Arquivos em lote não suportam instruções IF aninhadas. Você terá que escrever uma comparação If e, com base em seu resultado, pular em seu código usando goto. Dessa forma, você pode ter seu IF aninhado.

Em segundo lugar, avistei um provável erro de digitação que faz com que o primeiro não funcione mesmo que o if aninhado não estivesse presente. Há um + nele que vai ver se existe um caminho com um +. Caso contrário, executará o else.

Mas, dado que um if aninhado é um erro grave (o lote não o reconhece), em vez de ser executado, ele pára antes de o script ser executado.

Você quer que seu código seja parecido com isto:

    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
    
por 29.08.2018 / 16:36

Tags