Unity C#执行bat脚本

来源:互联网 发布:项目管理就业前景知乎 编辑:程序博客网 时间:2024/06/01 23:14
using System;using UnityEditor;using UnityEngine;using System.Collections.Generic;using System.IO;using System.Threading;using System.Text;class EdtUtil{public static System.Diagnostics.Process CreateShellExProcess(string cmd, string args, string workingDir = ""){var pStartInfo = new System.Diagnostics.ProcessStartInfo(cmd);pStartInfo.Arguments = args;pStartInfo.CreateNoWindow = false;pStartInfo.UseShellExecute = true;pStartInfo.RedirectStandardError = false;pStartInfo.RedirectStandardInput = false;pStartInfo.RedirectStandardOutput = false;if (!string.IsNullOrEmpty(workingDir))pStartInfo.WorkingDirectory = workingDir;return System.Diagnostics.Process.Start(pStartInfo);}public static void RunBat(string batfile, string args, string workingDir = ""){var p = CreateShellExProcess(batfile, args, workingDir);p.Close();}public static string FormatPath(string path){path = path.Replace("/", "\\");if (Application.platform == RuntimePlatform.OSXEditor)path = path.Replace("\\", "/");}}



现在,我们在工程Assets外层有一个batFiles目录,里面有一个gen_client_cfg.bat脚本

我们想通过Unity菜单执行这个脚本,例

using UnityEngine;using UnityEditor;class Test{private static void RunMyBat(string batFile,string workingDir){var path = EdtUtil.FormatPath(workingDir);if (!System.IO.File.Exists(path)){GameLogger.LogError("bat文件不存在:" + path);}else{EdtUtil.RunBat(batFile, "", path);}}[MenuItem("Tools/生成配置表")]private static void Run(){RunBat("gen_client_cfg.bat", Application.dataPath + "/../batFiles/");}}