方案一:使用UAT并修改Automation.cs代码
在打印BUILD SUCCESSFUL之后执行自定义的操作
App=D:\UEProject\UE5test\ue5test1\Packer.bat,CommandLine=D:\UEProject\UE5test\ue5test1
这行代码是放在ProjectLauncher->Build->Additional Command Line Parameters
CommandUtils.LogInformation("BUILD SUCCESSFUL");
for (int Index = 0; Index < CommandInfo.Arguments.Count; ++Index)
{
string app = "";
string commandLine = "";
string argument = CommandInfo.Arguments[Index];
// 提取 App 的值
if (argument.Contains("App="))
{
int startIndex = argument.IndexOf("App=") + 4;
int endIndex = argument.IndexOf(",", startIndex);
if (endIndex != -1 && endIndex > startIndex)
{
app = argument.Substring(startIndex, endIndex - startIndex);
}
}
// 提取 CommandLine 的值
if (argument.Contains("CommandLine="))
{
int startIndex = argument.IndexOf("CommandLine=") + 12;
int endIndex = argument.IndexOf(",", startIndex);
if (endIndex != -1 && endIndex > startIndex)
{
commandLine = argument.Substring(startIndex, endIndex - startIndex);
}
}
CommandUtils.LogInformation("Custom CommandLine: {0},{1}", app, commandLine);
if (!string.IsNullOrEmpty(app))
{
CommandUtils.Run(app, commandLine);
}
}
方案二:修改RunUAT.bat
rem ## Run AutomationTool
:DoRunUAT
pushd %UATDirectory%
dotnet %UATExecutable% %*
:: 调取自定义的程序
:: call "D:\UEProject\UE5test\ue5test1\Packer.bat"
setlocal EnableDelayedExpansion
set "args=%*"
for /F "tokens=2 delims== " %%a in ("!args!") do (
set "filePath=%%~dpa"
echo !filePath!Packer.bat
call "!filePath!Packer.bat"
)
endlocal
popd
set RUNUAT_ERRORLEVEL=%ERRORLEVEL%
对应批处理文件或exe程序内容可自定义