|
|
- @echo off
- rem ------------------------------
- rem huangyongxing@yeah.net
- rem ��Ŀ���뼰��ͣ���ƹ���
- rem ------------------------------
-
- cd %~dp0/../
- set DIR_ERL=%cd%
- cd ../
- set DIR_MAIN=%cd%
-
- rem ע������SRV_ID��HOST��PORT��
- rem һ��HOST���Լ���IP��SRV_ID�Ƽ�ʹ���Լ��Ĺ������֡���֤Ψһ��
- rem ͬʱ����Ҫ���·�ָ����Ӧ�汾��erl��װ·��
-
- set SRV_ID=1
- set HOST=
- set COOKIE=mrzj_%SRV_ID%
- set PORT=9110
- set NODE_NAME_PREFIX=mrzj_dev_
-
- set NODE_NAME=%NODE_NAME_PREFIX%%SRV_ID%@%HOST%
-
- set CENTER_NODE_NAME=mrzj_dev_center@%HOST%
- set CENTER_COOKIE=mrzj_dev_center
- set CENTER_PORT=9111
-
- title ����ս��Դ������(%NODE_NAME%, %PORT%)
-
- rem Э�����ɹ���
- set PROTO_TOOL=%DIR_MAIN%\doc\proto_auto\ProtoBuilder.exe
- if not exist %PROTO_TOOL% set PROTO_TOOL=
-
- rem ָ��erl·�������Զ�������Ӧ��werl��escript·��
-
- rem ʹ��otp 18.3ʾ��
- rem set ERL=D:\Program Files\erl7.3\bin\erl.exe
-
- rem ʹ��otp 19.3ʾ��
- rem set ERL=D:\Program Files\erl8.3\bin\erl
-
- rem ʹ��otp 23.3ʾ��
- set ERL=D:\Program Files\erl-23.3.4.4\bin\erl
-
- rem ʹ�û��������е�erl
- rem set ERL=erl
-
- rem ������Ϸ��ʹ�õ�config�������ڱ������ö���������
- set GS_CONFIG=gsrv.config
-
- rem �ͻ���·��
- set CLIENT=%DIR_MAIN%\code\u3d\app\localTest\ClientApp.exe
- if "%HOST%"=="" (
- call :fun_error HOST���
- goto :EOF
- )
-
- rem �ͻ���Ŀ¼
- set CLIENT_DIR=%DIR_MAIN%\code
- rem ������Ŀ¼
- set SERV_DIR=%DIR_ERL%
- rem svn����Ŀ¼(��ʵ�ʰ�װĿ¼����)
- set SVN_EXE=C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe
-
- rem ���ó�ʼ���ű�ִ�л����Ľӿ�
- call :fun_init_calc
- rem dialyzer��������
- rem plt file
- set PLTFILE=%DIR_ERL%\script\.dialyzer_plt_v%OTP_VER%
- rem dialyzer ������־�����ļ���ǰ
- set DIALYZER_OUTFILE_PREFIX=dialyzer_v%OTP_VER%
-
- echo.
-
- rem --------- ��ʼ��ѭ��: �ȴ�ָ��->����ָ��->ִ��ָ��->�ȴ�ָ�� ---------
-
- :fun_main
- echo erts version: %ERTS_VER%
- echo otp version: %OTP_VER%
- echo werl.exe : %WERL%
- echo server root : %DIR_ERL%
- set inp=
- echo ---------------------------------------------------------------------------
- echo make^|m ���� ^| dialyzer^|dlz ����dialyzer��̬����
- echo mmm ���ٱ���(powershell) ^| mm �������汾�������ļ�
- echo start ������Ϸ�������� ^| stop �ر���Ϸ��������
- echo restart ���������������� ^| hot �ȸ�������������
- echo hot_master �ȸ���Ϸ�� ^| hot_center �ȸ�����
- echo master ������Ϸ�� ^| stop_master �ر���Ϸ��
- echo center �������������� ^| stop_center �رտ���������
- echo werl ����һ��werl���� ^| kill^|k ǿ�н�������werl.exe
- echo dir ����serverĿ¼ ^| clean_logs^|cl ����������Ϸ����־
- echo client^|c ����PC���ͻ��� ^| attr ��������attr_convģ��
- if "%PROTO_TOOL%" NEQ "" echo pt Э�����ɹ��� ^| su ^| cu svn���� ������^|�ͻ���
- echo clear^|cls ���� ^| quit^|q �˳�
- echo ---------------------------------------------------------------------------
- set /p inp=������ָ��:
- cd %DIR_ERL%
- goto fun_routing
-
- :fun_routing
- if "%inp%"=="make" call :fun_make
- if "%inp%"=="m" call :fun_make
- if "%inp%"=="mm" call :fun_mm
- if "%inp%"=="mmm" call :fun_mmm
- if "%inp%"=="start" call :fun_start
- if "%inp%"=="stop" call :fun_stop
- if "%inp%"=="master" call :fun_start_master
- if "%inp%"=="stop_master" call :fun_stop_master
- if "%inp%"=="hot" call :fun_hot
- if "%inp%"=="hot_master" call :fun_hot_master
- if "%inp%"=="hot_center" call :fun_hot_center
- if "%inp%"=="restart" call :fun_restart
- if "%inp%"=="center" call :fun_start_center
- if "%inp%"=="stop_center" call :fun_stop_center
- if "%inp%"=="kill" call :fun_kill
- if "%inp%"=="k" call :fun_kill
- if "%inp%"=="clean_logs" call :fun_clean_logs
- if "%inp%"=="cl" call :fun_clean_logs
- if "%inp%"=="werl" call :fun_start_werl
- if "%inp%"=="client" call :fun_start_client
- if "%inp%"=="c" call :fun_start_client
- if "%inp%"=="pt" call :fun_proto_tool
- if "%inp%"=="attr" call :fun_create_attr_conv
- if "%inp%"=="dir" call :fun_dir_server
- if "%inp%"=="su" call :server_svn_update
- if "%inp%"=="cu" call :client_svn_update
- if "%inp%"=="dlz" call :fun_run_dialyzer
- if "%inp%"=="dialyzer" call :fun_run_dialyzer
- if "%inp%"=="cls" cls
- if "%inp%"=="clear" cls
- if "%inp%"=="quit" goto :EOF
- if "%inp%"=="q" goto :EOF
- echo.
- goto fun_main
-
- rem --------- ����Ϊ����ָ�������ӿڷ�װ ---------
-
- rem ��ʼ�������ű�һЩ����·��������һЩȫ�ֱ���
- rem �������±���ֵ��
- rem ERL��WERL��ESCRIPT��ERTS_VER��ERTS_VER_MAIN
- rem ERL_OPT_NORMAL
- rem ERL_OPT_S_SINGLE
- :fun_init_calc
- rem ����%erl%����erl˵�������û���������������escriptҲ�ҵõ�
- if "%ERL%"=="erl" set envTrue=1
- if "%ERL%"=="erl.exe" set envTrue=1
- setlocal enabledelayedexpansion
- if "!envTrue!"=="1" (
- for /f "delims=" %%i in ('where erl') do (set ERL=%%i)
- )
- rem ���ļ����Ϻ��������ж��Ƿ�����
- if "!ERL:~-4!" NEQ ".exe" set ERL=!ERL!.exe
- if NOT EXIST !ERL! (
- echo "�������"!ERL!
- goto :EOF
- ) ELSE (
- set ERL_BIN_ROOT=!ERL:erl.exe=!
- set ESCRIPT=!ERL_BIN_ROOT!escript.exe
- set WERL=!ERL_BIN_ROOT!werl.exe
- set DIALYZER=!ERL_BIN_ROOT!dialyzer.exe
- rem �����Զ�������·����'\'����д�Ŀ�����'/'����������ȳ���ȥ��
- set ERL_INST_TMP=!ERL_BIN_ROOT:bin\=!
- set ERL_INST=!ERL_INST_TMP:bin/=!
- )
- rem ȡ��erts version
- call :fun_calc_erts_ver ERTS_VER ERTS_VER_MAIN "!ERL!"
- rem call :fun_calc_otp_ver OTP_VER "!ERL!" "!ERL_INST!"
- call :fun_calc_otp_ver_simple OTP_VER "!ERL_INST!"
- endlocal & (
- rem ��������Ϊȫ�ֱ�������Ҫ������set���������Ǿֲ�������
- rem set ERL_BIN_ROOT=%ERL_BIN_ROOT%
- set ERL=%ERL%
- set WERL=%WERL%
- set ESCRIPT=%ESCRIPT%
- set DIALYZER=%DIALYZER%
- set ERTS_VER=%ERTS_VER%
- set ERTS_VER_MAIN=%ERTS_VER_MAIN%
- set OTP_VER=%OTP_VER%
- set ERL_INST=%ERL_INST%
- rem echo erlang root: %ERL_BIN_ROOT%
- echo erl.exe : %ERL%
- echo werl.exe : %WERL%
- echo escript.exe : %ESCRIPT%
- rem ����һЩִ�в���
- if %ERTS_VER_MAIN% LEQ 8 (
- set ERL_OPT_NORMAL=+P 204800 +K true +A 100 +spp true -smp enable -hidden +sbwt none
- set ERL_OPT_S_SINGLE=+P 204800 +K true +A 100 +spp true -smp disable -hidden +sbwt none
- ) ELSE (
- set ERL_OPT_NORMAL=+P 204800 +K true +A 100 +spp true +S 0 -hidden +sbwt none
- set ERL_OPT_S_SINGLE=+P 204800 +K true +A 100 +spp true +S 1 -hidden +sbwt none
- )
- ) & goto :EOF
-
- :fun_make
- cd %DIR_ERL%
- set startTime=%time%
- call :get_localtime startTimeStr
- echo [%startTimeStr%] start make
- echo.
- rem xcopy /d ֻ���±�Ŀ���µ�Դ�ļ�
- xcopy "dep\ebin\*.beam" "ebin\" /h /r /k /q /y /d
- rem �жϱ���������������ʵʹ�õ��ļ���Ŀǰwindows�涼ʹ��release�棬��Ҫ�����汾���ֹ������ļ���
- setlocal enabledelayedexpansion
- set needCopy=FALSE
- if NOT EXIST "ebin\game_logger.beam" (
- SET needCopy=TRUE
- ) ELSE (
- rem SET fileCmpRet=
- rem FOR /F %%i IN ('comp /M dep\ebin\debug\game_logger.beam ebin\game_logger.beam') DO set fileCmpRet=%%i
- rem if "!fileCmpRet!"=="�ļ��Ĵ�С��ͬ��" SET needCopy=TRUE
- call :calc_md5 "dep\ebin\release\game_logger.beam" "fMD51"
- call :calc_md5 "ebin\game_logger.beam" "fMD52"
- if "!fMD51!" NEQ "!fMD52!" SET needCopy=TRUE
- )
- if "!needCopy!"=="TRUE" xcopy "dep\ebin\release\*.beam" "ebin\" /e /h /r /k /q /y
- endlocal
- rem �ڱ��롢�ȸ��ȼ����п�ֱ��ʹ��halt(0)ֱ���˳�erlangVM����c:q()������ֹ�������ٶȸ���
- rem set makeOptions=[{d, 'DEV_SERVER'}],
- rem ͨ�������ӵ�ѡ�� {d,'DEV_SERVER'}, {d,'CP_VER',"TW"}, ...
- set makeOptions=[]
- "%ERL%" -noinput -pa ./ebin -eval "mmake:all(2, %makeOptions%),halt(0)"
- call :calc_time_diff "%startTime%" "%time%" "runTime"
- call :get_localtime EndTimeStr
- echo.
- echo cost time: %runTime%
- echo.
- echo [%EndTimeStr%] finish make
- echo "%EndTimeStr%" > %DIR_ERL%/script/timefile
- goto :EOF
-
- :fun_mm
- cd %DIR_ERL%
- set startTime=%time%
- call :get_localtime startTimeStr
- echo [%startTimeStr%] start mm
- echo.
- svn status "./src" > "./svn_status.log"
- cd %DIR_ERL%
- "%ERL%" -noinput -pa ./ebin -eval "make_file:make_file(),halt(0)"
- call :calc_time_diff "%startTime%" "%time%" "runTime"
- call :get_localtime EndTimeStr
- echo.
- echo cost time: %runTime%
- echo.
- echo [%EndTimeStr%] finish make
- goto :EOF
-
- :fun_start
- call :fun_start_center & call :fun_start_master
- goto :EOF
-
- :fun_stop
- call :fun_stop_master & call :fun_stop_center
- goto :EOF
-
- :fun_mmm
- cd %DIR_ERL%
- set startTime=%time%
- call :get_localtime startTimeStr
- echo [%startTimeStr%] start mmm
- echo.
- cd script
- echo %cd%
- PowerShell.exe -file mm.ps1
- call :calc_time_diff "%startTime%" "%time%" "runTime"
- call :get_localtime EndTimeStr
- echo.
- echo cost time: %runTime%
- echo.
- echo [%EndTimeStr%] finish make
- goto :EOF
-
- :fun_start_master
- cd %DIR_ERL%\config
- rem start cmd /C ""%ERL%" %ERL_OPT_NORMAL% -name %NODE_NAME% -setcookie %COOKIE% -boot start_sasl -config %GS_CONFIG% -pa ../ebin -s main start -extra %HOST% %PORT% & pause"
- start "" "%WERL%" %ERL_OPT_NORMAL% -name %NODE_NAME% -setcookie %COOKIE% -boot start_sasl -config %GS_CONFIG% -pa ../ebin -s main start -extra %HOST% %PORT%
- goto :EOF
-
- :fun_stop_master
- cd %DIR_ERL%\config
- set STOP_NODE_NAME=%NODE_NAME_PREFIX%%SRV_ID%_stop_%RANDOM%@%HOST%
- "%ERL%" -hidden -name %STOP_NODE_NAME% -setcookie %COOKIE% -pa ../ebin -s main stop_server -extra %NODE_NAME%
- rem start "" "%WERL%" -hidden -name %STOP_NODE_NAME% -setcookie %COOKIE% -pa ../ebin -s main stop_server -extra %NODE_NAME%
- goto :EOF
-
- :fun_hot
- call :fun_hot_master & call :fun_hot_center
- goto :EOF
-
- :fun_hot_master
- cd %DIR_ERL%\config
- set hotNodeName=%NODE_NAME_PREFIX%%SRV_ID%_hot_%RANDOM%@%HOST%
- "%ERL%" -hidden -name %hotNodeName% -setcookie %COOKIE% -pa ../ebin -eval "rpc:call('%NODE_NAME%', u, u, []), halt(0)"
- rem start "" "%WERL%" -hidden -name %hotNodeName% -setcookie %COOKIE% -pa ../ebin -eval "rpc:call('%NODE_NAME%', u, u, []), halt(0)"
- goto :EOF
-
- :fun_hot_center
- cd %DIR_ERL%\config
- set hotNodeName=%NODE_NAME_PREFIX%center_hot_%RANDOM%@%HOST%
- "%ERL%" -hidden -name %hotNodeName% -setcookie %CENTER_COOKIE% -pa ../ebin -eval "rpc:call('%CENTER_NODE_NAME%', u, u, []), halt(0)"
- rem start "" "%WERL%" -hidden -name %hotNodeName% -setcookie %CENTER_COOKIE% -pa ../ebin -eval "rpc:call('%CENTER_NODE_NAME%', u, u, []), halt(0)"
- goto :EOF
-
- :fun_restart
- call :fun_stop
- choice /t 2 /d y /n >nul
- call :fun_start
- goto :EOF
-
- :fun_start_center
- cd %DIR_ERL%\config
- rem start cmd /C ""%ERL%" %ERL_OPT_NORMAL% -name %CENTER_NODE_NAME% -setcookie %CENTER_COOKIE% -boot start_sasl -config cls.config -pa ../ebin -s main start -extra %HOST% %CENTER_PORT% & pause"
- start "" "%WERL%" %ERL_OPT_NORMAL% -name %CENTER_NODE_NAME% -setcookie %CENTER_COOKIE% -boot start_sasl -config cls.config -pa ../ebin -s main start -extra %HOST% %CENTER_PORT%
- goto :EOF
-
- :fun_stop_center
- cd %DIR_ERL%\config
- set STOP_NODE_NAME=center_stop_%RANDOM%@%HOST%
- "%ERL%" -hidden -name %STOP_NODE_NAME% -setcookie %CENTER_COOKIE% -pa ../ebin -s main stop_server -extra %CENTER_NODE_NAME%
- rem start "" "%WERL%" -hidden -name %STOP_NODE_NAME% -setcookie %CENTER_COOKIE% -pa ../ebin -s main stop_server -extra %CENTER_NODE_NAME%
- goto :EOF
-
- rem ǿ�ƹر�werl���̣����쳣�����������£�windows�л�����werl���̣�
- :fun_kill
- taskkill /F /IM werl.exe
- goto :EOF
-
- rem ����������Ϸ����־
- :fun_clean_logs
- cd %DIR_ERL%\logs
- DEL /Q *.*
- goto :EOF
-
- rem �����ڵ�����werl
- :fun_start_werl
- cd %DIR_ERL%\config
- if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
- set randomNode=werl_%hour%%time:~3,2%%time:~6,2%_%RANDOM%@%HOST%
- if not exist gsrv.config (
- start "" "%WERL%" -hidden -name %randomNode% -setcookie %COOKIE% -pa ../ebin
- ) else (
- start "" "%WERL%" -hidden -name %randomNode% -setcookie %COOKIE% -pa ../ebin -config gsrv.config
- )
- goto :EOF
-
- rem dialyzer��̬�������� ��ʼ���־ò�ѯ���ļ�plt file
- :fun_init_plt
- echo [init] build plt file
- "%DIALYZER%" --build_plt --apps erts kernel stdlib sasl compiler mnesia crypto inets ssl public_key eunit tools --output_plt "%PLTFILE%"
- goto :EOF
-
- rem dialyzer��̬�������� ִ�з���
- :fun_analyse_code
- call :get_datetime_str dt
- set outfile=%DIR_ERL%\script\%DIALYZER_OUTFILE_PREFIX%_%dt%.txt
- set erlLib=%ERL_INST%\lib
- set serverDir=%DIR_ERL%
- echo ����ִ��dialyzer����
- echo ����������־�ļ���%outfile%
- rem "D:/Program Files/erl-23.2.5/bin/dialyzer.exe" -I server/include --src server/src -r server/src -pa "D:/Program Files/erl-23.2.5/lib" --plt ./.dialyzer_plt_mrzj > dialyzer_%dt%.txt
- "%DIALYZER%" -I %serverDir%\include --src %serverDir%\src -r %serverDir%\src -pa "%erlLib%" --plt "%PLTFILE%" > "%outfile%"
- goto :EOF
-
- rem dialyzer��̬�������ߵ���
- :fun_run_dialyzer
- if NOT EXIST "%PLTFILE%" call :fun_init_plt
- call :fun_analyse_code
- goto :EOF
-
- rem Э�����ɹ���
- :fun_proto_tool
- rem ��Ҫ���������ӳ٣�����else���ſ��״�ִ��ʱ��������������
- setlocal enabledelayedexpansion
- if "!PROTO_TOOL!"=="" (
- call :fun_error δ����Э�����ɹ���
- ) else (
- for /f "delims=" %%t in ('echo !PROTO_TOOL!') do (set dirProtoTool=%%~dpt)
- echo ---------------------------------
- echo change to directory: [!dirProtoTool!]
- cd !dirProtoTool!
- "!PROTO_TOOL!"
- )
- endlocal
- goto :EOF
-
- rem �����ͻ���
- :fun_start_client
- if NOT EXIST %CLIENT% (
- call :fun_error û���ҵ��ͻ��˿�ִ���ļ�[%CLIENT%]
- goto :EOF
- )
- setlocal enabledelayedexpansion
- for /f "delims=" %%t in ('echo !CLIENT!') do (set dirClient=%%~dpt)
- rem �ͻ��˴�ij���汾��ʼ���ƺ����˾���·����������Դ��������exe����Ŀ¼��������
- cd /d "!dirClient!"
- start "" cmd /C "%CLIENT%"
- endlocal
- goto :EOF
-
- rem ����attr_conv�
- :fun_create_attr_conv
- if NOT EXIST src\tool\attr_tool.erl (
- echo "δ�ҵ�attr_tool.erl�ļ�"
- ) ELSE (
- "%ESCRIPT%" src\tool\attr_tool.erl
- )
- goto :EOF
-
- rem �����˹���Ŀ¼ %DIR_ERL%
- :fun_dir_server
- start "" explorer "%DIR_ERL%"
- goto :EOF
-
- rem �����˸���
- :server_svn_update
- start "" "%SVN_EXE%" /command:update /path:"%SERV_DIR%" /closeonend:0
- goto :EOF
-
- rem �ͻ��˸���
- :client_svn_update
- start "" "%SVN_EXE%" /command:update /path:"%CLIENT_DIR%" /closeonend:0
- goto :EOF
-
- rem node name split
- rem call :node_name_split "%node%" "nodePrefix" "nodeHost"
- :node_name_split
- set input=%~1
- set sep=@
- set nPre=
- set nHost=
- setlocal enabledelayedexpansion
- for /F "delims=%sep% tokens=1-2" %%a in ("%input%") do (
- set nPre=%%a
- set nHost=%%b
- )
- endlocal & set "%~2=%nPre%" & set "%~3=%nHost%" & goto :EOF
-
- rem ��������ʱ����ֵ
- rem ����ʾ��:
- rem set startTime=%time%
- rem echo do something
- rem call :calc_time_diff "%startTime%" "%time%" "runTime"
- rem echo cost time %runTime%
- :calc_time_diff
- setlocal
- set /a n=0
- for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
- set /a n-=1%%a*3600000+1%%b*60000+1%%c*1000+1%%d*10
- set /a n+=1%%e*3600000+1%%f*60000+1%%g*1000+1%%h*10
- )
- set /a s=n/3600000,n=n%%3600000,f=n/60000,n=n%%60000,m=n/1000,n=n%%1000
- set "ok=%s% Сʱ %f% ���� %m% �� %n% ����"
- endlocal & set "%~3=%ok%" & goto :EOF
-
- rem ��ȡ����ʱ��
- :get_localtime
- setlocal
- if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
- set lt=%date:~0,4%-%date:~5,2%-%date:~8,2% %hour%:%time:~3,2%:%time:~6,2%
- endlocal & set "%~1=%lt%" & goto :EOF
-
- rem ��ȡ����
- rem call :get_datetime_str var
- :get_datetime_str
- setlocal
- if %time:~0,2% leq 9 (set hour=0%time:~1,1%) else (set hour=%time:~0,2%)
- set dt=%date:~0,4%%date:~5,2%%date:~8,2%_%hour%%time:~3,2%%time:~6,2%
- endlocal & set "%~1=%dt%" & goto :EOF
-
- rem �����ļ�md5
- rem call :calc_md5 "filePath" "fMD5"
- rem echo %fMD5%
- :calc_md5
- setlocal
- FOR /F %%i IN ('certutil -hashfile "%~1" MD5 ^| findstr /V ��ϣ ^| findstr /V ����') DO set fMD5=%%i
- endlocal & set "%~2=%fMD5%" & goto :EOF
-
- rem ����erts�汾
- rem call :fun_calc_erts_ver "ERTS_VER" "ERTS_VER_MAIN" "%ERL%"
- :fun_calc_erts_ver
- rem ע�⣬pattern�����汾���пո���Ҫ������bat����⣬�����������ֻ������⣩
- rem ����Ϊ��ֹ��С�ĸ�ʽ������ʱȥ���˿ո���
- rem ���Ը�Ϊ�ո����滻������һ���滻�ո�����
- set pattern=Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version
- set replace=
- set erlbin=%3
- setlocal enabledelayedexpansion
- for /f "usebackq delims=" %%i in (`"%erlbin%" +V 2^>^&1`) do (set allstr=%%i)
- set "ertsVer=!allstr:%pattern%=%replace%!"
- set "ertsVer=!ertsVer: =!"
- for /f "usebackq delims=." %%i in (`echo !ertsVer!`) do (
- if defined ertsVerMain goto break_calc_erts_ver
- set ertsVerMain=%%i
- )
- :break_calc_erts_ver
- endlocal & set "%~1=%ertsVer%" & set "%~2=%ertsVerMain%" & goto :EOF
-
- rem ����otp version������erl��ȡ���汾�ţ��ٶ�λ�汾���ļ���
- rem call :fun_calc_otp_ver OTP_VER "%ERL%" "%ERL_INST%"
- :fun_calc_otp_ver
- rem erlang:system_info(otp_release) ��OTP 17֮����ֻ�ܻ�ȡ���汾��
- rem Win��Linuxͨ�еķ�����ͨ�� os:find_executable("erl") �ҵ�erl.exe��
- rem Ȼ����ȡ�����ļ� ../../release/MainOTPVerion/OTP_VERSION
- rem ��Win�Ͽ��Լ���Ϊ��װ·���µ� releases/MainOTPVerion/OTP_VERSION
- set erlbin=%2
- set erlInst=%3
- setlocal enabledelayedexpansion
- for /f "usebackq delims=" %%i in (`"%erlbin% -noshell -eval ""io:fwrite(""""^~s"""",[erlang:system_info(otp_release)]),halt(0)"""`) do (
- set otpMainVer=%%i
- )
- set releaseFile=%erlInst%\releases\%otpMainVer%\OTP_VERSION
- for /f "usebackq delims=" %%i in (`type %releaseFile%`) do (
- set otpVer=%%i
- )
- endlocal & set "%~1=%otpVer%" & goto :EOF
-
- rem ����otp version��������erl��ȡ���汾�ţ������ļ�ϵͳ�½���һ���汾��Ŀ¼����λ�ļ���
- :fun_calc_otp_ver_simple OTP_VER "%ERL_INST%"
- set erlInst=%2
- set releaseDir=%erlInst%\releases
- setlocal enabledelayedexpansion
- cd /d %releaseDir%
- for /f "usebackq delims=" %%i in (`dir /AD /B`) do (
- set releaseFile=%releaseDir%\%%i\OTP_VERSION
- )
- for /f "usebackq delims=" %%i in (`type %releaseFile%`) do (
- set otpVer=%%i
- )
- endlocal & set "%~1=%otpVer%" & goto :EOF
-
- :fun_error
- echo ---------------------
- if "%1"=="" (
- echo ������!
- ) ELSE (
- echo %1
- )
- echo ---------------------
- echo.
- pause
- goto :EOF
|