当我尝试运行批处理脚本时,出现“批处理:(此时意外出现)”错误

当我尝试运行批处理脚本时,出现“批处理:(此时意外出现)”错误

我正在运行这个批处理脚本,它给出了标题中描述的错误

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

您的批处理文件中有两个问题。

第一个是你有嵌套的 IF。批处理文件不支持嵌套的 IF 语句。你必须编写一个 If 比较,并根据其结果使用 goto 在代码中跳转。这样,你就可以拥有嵌套的 IF。

其次,我发现了一个可能的拼写错误,即使没有嵌套的 if,它也会造成第一个 if 不起作用。其中有一个 +,它将检查是否存在带有 + 的路径。如果不存在,它将执行 else。

但是考虑到嵌套的 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

相关内容