четверг, 18 декабря 2014 г.

azka.bat

Пакетник для запуска клиентских частей АЦК-Ф, АЦК-П и АЦК-ГЗ

/* Метаязыком:
Если существует client\maincontroller.exe, то: если существует client\Payables.ocx (P.S. тут можно любой из 4-х ключевых файлов упомянуть: killcache.bat, CapInvest.ocx, Payables.ocx, reciprocal.ocx), то это клиентская часть АЦК-Ф,
иначе это клиентская часть АЦК-П,
Иначе, если существует client\order.exe, то это клиентская часть АЦК-ГЗ,
иначе - хз.
*/

@ECHO OFF
REM prev1 version 09.12.2015
REM prev2 version 15.10.2016
REM prev3 version 22.10.2016
REM prev4 version 03.09.2019
REM curr version 15.02.2021
SETLOCAL ENABLEDELAYEDEXPANSION
SET okstart=0
IF EXIST AzkExchange.exe (
TITLE [AZKExchange] && ECHO [AZKExchange] запускается ...
  SET okstart=1
  START AzkExchange.exe
) ELSE (
  IF EXIST client (
    IF EXIST client\maincontroller.exe (
      IF EXIST client\Payables.ocx (
TITLE [АЦК-Финансы] && ECHO [АЦК-Финансы] запускается ...
        IF EXIST client\Azk2Clnt.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\Azk2Clnt.ini=!PORT_CLNT!
              start %CD%\client\Azk2Clnt.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано: не найден файл StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано: не найден файл client\Azk2Clnt.ini
          goto exit
        )
      ) ELSE (
TITLE [АЦК-Планирование] && ECHO [АЦК-Планирование] запускается ...
        IF EXIST client\Azk2Clnt.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\Azk2Clnt.ini=!PORT_CLNT!
              start %CD%\client\Azk2Clnt.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано:
            ECHO не найден файл
            ECHO StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано:
          ECHO не найден файл
          ECHO client\Azk2Clnt.ini
          goto exit
        )
      )
    ) ELSE (
      IF EXIST client\order.exe (
TITLE && ECHO [АЦК-Госзаказ] запускается ...
        IF EXIST client\order.ini (
          FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\order.ini') DO (
          SET PORT_CLNT=%%a
          )
          IF EXIST StartServer.bat (
            FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
            SET PORT_SRVR=%%a
            )
            IF "!PORT_SRVR!"=="!PORT_CLNT!" (
              SET okstart=1
              CD client
              START order.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
            ) ELSE (
              ECHO Выполнение прервано:
              ECHO не совпадают порты в файлах
              ECHO StartServer.bat=!PORT_SRVR!
              ECHO client\order.ini=!PORT_CLNT!
              start %CD%\client\order.ini
              goto exit
            )
          ) ELSE (
            ECHO Выполнение прервано:
            ECHO не найден файл
            ECHO StartServer.bat
            goto exit
          )
        ) ELSE (
          ECHO Выполнение прервано:
          ECHO не найден файл
          ECHO client\order.ini
          goto exit
        )      ) ELSE (
        ECHO Выполнение прервано:
        ECHO подсистема не распознана
      )
    )
  ) ELSE (
ECHO Выполнение прервано:
ECHO не удалось распознать подсистему, не найдены ни каталог "client", ни файл AzkExchange.exe
  )
)
:exit
IF "%okstart%"=="1" (timeout 5) ELSE (pause)
ENDLOCAL

Комментариев нет:

Архив