主要测试代码:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
namespace CallBat
{
///
/// 作者:Jave.Lin
///
static class Program
{
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main(string[] args)
{
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
if (args.Length == 0)
{
Console.WriteLine("args.Length==0 error!");
return;
}
string fileName = args[0];
if (!File.Exists(fileName))
{
Console.WriteLine("fileName is not Exists error! the fileName is:\r\n"+fileName);
return;
}
string fileNameNoExtension = Path.GetFileNameWithoutExtension(fileName);
Process[] tps = Process.GetProcessesByName(fileNameNoExtension);
if (tps != null)
{
foreach (Process tp in tps)
{
if (tp.ProcessName == fileNameNoExtension)
{
try
{
Console.WriteLine("[" + fileNameNoExtension + "] process had run, and then will kill it!");
tp.Kill();
tp.Close();
}
catch
{ }
}
}
}
string workDirectory = Path.GetDirectoryName(fileName);
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;//设置为false将会看到程序窗口
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//启动进程时窗口状态
p.StartInfo.RedirectStandardOutput = true;
//p.StartInfo.FileName = Server.MapPath("a.bat");
p.StartInfo.FileName = fileName;//如果a.bat在System32文件夹中,此处只需填写文件名即可
p.StartInfo.WorkingDirectory = workDirectory;
if (args.Length > 1)
{
string argsStr = string.Empty;
for (int i = 1; i < args.Length; i++)
{
argsStr += args[i] + " ";
}
p.StartInfo.Arguments = argsStr;
}
p.Start();
p.Close();
}
}
}