@setlocal

@rem Parse arguments. erlsrv.exe prepends erl arguments prior to first ++.
@rem Other args are position dependent.
@set args="%*"
@for /F "delims=++ tokens=1,2,3" %%I in (%args%) do @(
    @set erl_args=%%I
    @call :set_trim node_name %%J
    @call :set_trim node_root %%K
)

@set releases_dir=%node_root%\releases

@rem parse ERTS version and release version from start_erl.dat
@for /F "tokens=1,2" %%I in (%releases_dir%\start_erl.data) do @(
    @call :set_trim erts_version %%I
    @call :set_trim release_version %%J
)

@set erl_exe=%node_root%\erts-%erts_version%\bin\erl.exe
@set boot_file=%releases_dir%\%release_version%\%node_name%

@if exist %releases_dir%\%release_version%\sys.config (
    @set app_config=%releases_dir%\%release_version%\sys.config
) else (
    @set app_config=%node_root%\etc\app.config
)

@if exist %releases_dir%\%release_version%\vm.args (
    @set vm_args=%releases_dir%\%release_version%\vm.args
) else (
    @set vm_args=%node_root%\etc\vm.args
)

@%erl_exe% %erl_args% -boot %boot_file% -config %app_config% -args_file %vm_args%

:set_trim
@set %1=%2
@goto :EOF