#unity/代码缓存 #unity/日常积累 ## 需求: unity 命令行,执行多行指令:先跳转到c盘根目录,创建git_backup文件夹,通过git clone,拉取https://192.168.0.223:8843/igengine/cgbu_sdk.git到本地 ## 代码实现: ``` cs using UnityEngine; using System.Diagnostics; public class GitCloneExample : MonoBehaviour { void Start() { ExecuteGitCommands(); } void ExecuteGitCommands() { // 多条命令使用 && 连接 string commands = "cd C:\\ && mkdir git_backup && cd git_backup && git clone https://192.168.0.223:8843/igengine/cgbu_sdk.git"; Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = "/c " + commands; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; process.Start(); // 获取输出 string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); process.WaitForExit(); // 打印输出 UnityEngine.Debug.Log("Output:\n" + output); if (!string.IsNullOrEmpty(error)) { UnityEngine.Debug.LogError("Error:\n" + error); } } } ``` 代码解释 多行命令的组合:我们用 && 将每个命令连在一起,这样每条命令都会依次执行。只有当前命令成功后,才会继续执行下一条命令。 ``` cs string commands = "cd C:\\ && mkdir git_backup && cd git_backup && git clone https://192.168.0.223:8843/igengine/cgbu_sdk.git"; ``` 1. **启动进程**:将 `cmd.exe` 的参数设置为 `"/c " + commands`,从而让 cmd 执行多条命令并在完成后自动关闭。 2. **重定向输出**:通过 `RedirectStandardOutput` 和 `RedirectStandardError` 捕获命令的输出和错误,并在 Unity 控制台中显示。 ### 注意事项 - **Git 安装**:确保系统环境变量中已配置 `git`,且能通过命令行直接调用。 - **网络连接**:确保 Unity 能够访问目标 IP 地址,且克隆仓库需要的网络权限已正确设置。 - **权限**:执行目录创建和克隆操作时可能需要管理员权限。如果遇到权限问题,可以以管理员身份运行 Unity。 这个代码示例在 Unity 编辑器内执行会触发指定命令,且在控制台中显示克隆进度和任何错误信息。 ### 运行 PowerShell 命令 如果你想执行 PowerShell 命令,只需将 `cmd.exe` 替换为 `powershell.exe`: