[Unity]在Unity中调用外部程序及批处理文件,写自动化编译脚本需要注意的地方
2020/04
18
08:04
如果调用外部普通应用程序, 比如notepad.exe 这样调用
static public bool ExecuteProgram(string exeFilename, string workDir, string args)
{
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
info.FileName = exeFilename;
info.WorkingDirectory = workDir;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.Arguments = args;
info.UseShellExecute = false;
info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process task = null;
bool rt = true;
try
{
task = System.Diagnostics.Process.Start(info);
if (task != null)
{
task.WaitForExit(10000);
}
else
{
return false;
}
}
catch (Exception e)
{
Debug.LogError("Error: " + e.ToString());
return false;
}
finally
{
if (task != null && task.HasExited)
{
string output = task.StandardError.ReadToEnd();
if (output.Length > 0)
{
Debug.LogError(output);
}
output = task.StandardOutput.ReadToEnd();
if (output.Length > 0)
{
Debug.Log("Error: " + output);
}
rt = (task.ExitCode == 0);
}
}
return rt;
}
如果需要调用Window的批处理文件BAT,
或者含有控制台输出的程序,
或者使用上面的方法卡死, 则使用下面的方法运行
static bool ExecuteProgram(string exeFilename, string workDir, string args)
{
System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
info.FileName = exeFilename;
info.WorkingDirectory = workDir;
info.UseShellExecute = true;
info.Arguments = args;
info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process task = null;
bool rt = true;
try
{
Debug.Log("ExecuteProgram:" + args);
task = System.Diagnostics.Process.Start(info);
if (task != null)
{
task.WaitForExit(100000);
}
else
{
return false;
}
}
catch (Exception e)
{
Debug.LogError("ExecuteProgram:" + e.ToString());
return false;
}
finally
{
if (task != null && task.HasExited)
{
rt = (task.ExitCode == 0);
}
}
return rt;
}
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: [Unity]在Unity中调用外部程序及批处理文件,写自动化编译脚本需要注意的地方
Post Link: [Unity]在Unity中调用外部程序及批处理文件,写自动化编译脚本需要注意的地方