上山打老虎 发表于 2021-7-20 19:43:14

C# Process执行bat

Process类
System.Diagnostics 命名空间提供类,使您能够与系统进程、事件日志和性能计数器进行交互。
Process类提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。
Process除了可以执行bat,还可以执行计算机上其它的应用程序,包括各种bat及脚本
使用示例一

using System;
using System.Diagnostics;

public class ProcessDemo
{
    static void Main(string[] args)
    {
      Process process = new Process();

      try
      {
            //打开C盘
            //Process.Start("c:\\");
            
            //打开word文件
            string file = @"D:\Code\Unity3D\SVN\cosmosbox\关卡制作教程.doc";
            //OpenMsWord(file);
            
            //执行bat文件
            LaunchBat("d:/run.cmd");
      }
      catch (Exception e)
      {
            Console.WriteLine( e.Message);
      }
    }

    /// <summary>
    /// 传入文件名打开文件
    /// </summary>
    /// <param name="file"></param>
    static void OpenMsWord(string file)
    {
      ProcessStartInfo startInfo=new ProcessStartInfo();
      //我的机器上没有安装microsoft word --!
      //startInfo.FileName = "winword";
      startInfo.FileName = "wps";
      startInfo.Arguments = file;//设置参数
      Process.Start(startInfo);
    }

    /// <summary>
    /// 执行bat文件
    /// </summary>
    /// <param name="batName"></param>
    static void LaunchBat(string batName)
    {
      ProcessStartInfo startInfo = new ProcessStartInfo();
      startInfo.CreateNoWindow = true;
      startInfo.FileName =batName;
      startInfo.WindowStyle=ProcessWindowStyle.Maximized;
      Process.Start(startInfo);
      
    }
}使用示例二
调用此方法将在执行 3TexturePacker打包Players图集.bat
/// <summary>
    ///   执行bat,为tk2d打包手持武器准备
    /// </summary>
    private static void ExecuteBat()
    {
      Process proc = null;
      AppDataPath = Application.dataPath;
      try
      {
            proc = new Process();
            proc.StartInfo.FileName = AppDataPath + "/3TexturePacker打包Players图集.bat";
            //proc.StartInfo.Arguments = string.Format("10");//this is argument
            proc.StartInfo.CreateNoWindow = false;
            proc.Start();
            proc.WaitForExit();
      }
      catch (Exception ex)
      {
            CBase.LogError("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace);
      }
      CBase.Log("打包Weapon InHand图集完成!");
    }

MSDN文档
MSDN:http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process(v=vs.110).aspx


文档来源:51CTO技术博客https://blog.51cto.com/zhaoqingqing/3146431
页: [1]
查看完整版本: C# Process执行bat