C# 执行一个bat脚本,bat脚本的 指令是 启动 控制台应用程序,在windows 10 里面能够弹出dos窗体,正常执行。 但是在windows server 2016里面没有弹出dos 窗体。
C# 调用bat脚本的代码如下:
// 输入bat 脚本执行启动指令
string batFilePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\StartTask.bat";
// 定义要写入.bat文件的指令
string[] batCommands =
{
"@echo off",
AnNengSettings.CadTaskPath
// "pause" // 这个命令会暂停脚本执行,直到用户按下任意键
};
// 使用StreamWriter写入.bat文件
using (StreamWriter writer = new StreamWriter(batFilePath))
{
foreach (var command in batCommands)
{
writer.WriteLine(command);
}
}
// 如果你想要运行这个.bat文件,可以使用Process类
// 以下参数不要修改,否在在windows server里面无法启动CAD的进程
ProcessStartInfo startInfo = new ProcessStartInfo(batFilePath)
{
UseShellExecute = true, // 设置为false以重定向输出
// RedirectStandardOutput = true, // 重定向标准输出到Process的StandardOutput流
// RedirectStandardError = true, // 重定向标准错误到Process的StandardError流
// CreateNoWindow = false, // 设置为false以创建新窗口(如果设置为true则不会显示窗口)
// Verb = "runas" // 如果需要管理员权限,则使用这个选项
};
using (Process process = new Process { StartInfo = startInfo })
{
bool started = process.Start();
if (started == true)
{
LogHelper.SetInfoLog("Bat脚本启动消费者任务成功");
}
else
{
LogHelper.SetErrorLog("Bat脚本启动消费者任务失败");
}
}