windows批处理demo

下面是一个windows批处理编译流水线脚本,仅供参考语法(其中 // 表示后来加的注释,并非原文件中的注释)。

@rem Script to compile mdl sdk on Windows x64 platform
@echo off
 
echo "COMPILE_X64.BAT: MDL SDK build begin..."
 
set PATH=C:\Windows\system32;C:\Windows;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\;
set VS140COMNTOOLS=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\
 
@rem set BUILD_CONFIG=Debug
set BUILD_CONFIG=Release  // 设置变量
set PROJECT_PATH=%~dp0
set LIB_PATH=%MDL_DEP%\windows\vc143\lib
set GITBASH="C:\Program Files\Git\bin\bash.exe"
 
echo "COMPILE_X64.BAT: LIB_PATH=%LIB_PATH%"
echo "COMPILE_X64.BAT: BUILD_CONFIG=%BUILD_CONFIG%"
echo "COMPILE_X64.BAT: VS140COMNTOOLS=%VS140COMNTOOLS%"
echo "COMPILE_X64.BAT: PATH=%PATH%"
echo "COMPILE_X64.BAT: BASH=%GITBASH%"
 
@REM rmdir /s /q %SOLUTION_PATH%\x64\%BUILD_CONFIG%\  // @rem 行注释
echo "COMPILE_X64.BAT: Setup workspace..."
@rem may return err if setup wad done previously
%GITBASH% -e setup-sparse-checkout.sh --http
%GITBASH% -e prepare.sh -p
if not "%errorlevel%" == "0" goto ERROR  // errorlevel表示上一个命令的退出值
 
 
echo "COMPILE_X64.BAT: Setup msbuild environment"
call "%VS140COMNTOOLS%..\..\VC\Auxiliary\Build\vcvarsall.bat" amd64
if not "%errorlevel%" == "0" goto ERROR
 
@rem python package needs it
copy "libs\win64\mdl_api.dll" X_LANG_SDK\python\pymdl
if not "%errorlevel%" == "0" (
    echo "COMPILE_X64.BAT: copy mdl_api.dll to X_LANG_SDK\python\pymdl failed!!!"
    goto ERROR
)
 
echo "COMPILE_X64.BAT: generate message classes..."
cd /d %PROJECT_PATH%X_LANG_SDK
py -3 code_gen.py -q
 
cd /d %PROJECT_PATH%X_LANG_SDK\python
rmdir /s /q dist  // 删除文件夹
echo "COMPILE_X64.BAT: now build python sdk..."
call build.bat
if not "%errorlevel%" == "0" (  // if ... else ... 用法
    echo "COMPILE_X64.BAT: build python sdk failed!!!"
    goto ERROR
) else (
    call dist.bat  // 调用另一个bat
)
 
echo "COMPILE_X64.BAT: now build python2 sdk..."
call build.bat py2
if not "%errorlevel%" == "0" (
    goto ERROR
    echo "COMPILE_X64.BAT: build python2 sdk failed!!!"
) else (
    call dist.bat py2
)
 
echo "COMPILE_X64.BAT: now build java sdk lib..."
@rem Not gen java api here, cause we won't package the jar ball on windows
@REM echo "COMPILE_X64.BAT: generate message classes for java..."
@REM cd /d %PROJECT_PATH%sdk
@REM py -3 code_gen.py -l java -q
 
cd /d %PROJECT_PATH%X_LANG_SDK\java
del /q /f javamdl\src\main\resources\*.dll
 
echo "COMPILE_X64.BAT: JAVA_HOME is %JAVA_HOME%"
call build.bat
if not "%errorlevel%" == "0" (
    echo "COMPILE_X64.BAT: build java sdk lib failed!!!"
    goto ERROR
)
 
echo "COMPILE_X64.BAT: MDL SDK build succeed, archive outputs..."
@REM tar -caf mdl_release.zip ^
@REM     "%SOLUTION_PATH%\x64\%BUILD_CONFIG%\*.exe" ^
@REM     "%SOLUTION_PATH%\x64\%BUILD_CONFIG%\mdl_api.lib" ^
@REM     "%SOLUTION_PATH%\x64\%BUILD_CONFIG%\feeder_client.pdb" ^
@REM     "%SOLUTION_PATH%\x64\%BUILD_CONFIG%\*.dll" ^
@REM     "%LIB_PATH%\*.dll"
if not "%errorlevel%" == "0" goto ERROR
 
exit /b 0
 
:ERROR
echo "COMPILE_X64.BAT: MDL SDK build failed"
exit /b 1