【问题标题】:How to open cmd everytime using C# Kestrel如何每次使用 C# Kestrel 打开 cmd
【发布时间】:2021-09-01 05:57:48
【问题描述】:

我想使用 System.Diagnostics 运行 bat 文件,我做到了。但我有一个问题。

public static void RunMiningProgram(string appPath, string batFilePath)
{
    for (int i = 0; i < 2; i++)
    {
        using (Process p = new Process())
        {
            p.StartInfo.FileName = $"{appPath}\\{batFilePath}";
            p.StartInfo.WorkingDirectory = appPath;
            p.Start();
        }
    }
}
var path = @"D:\PROJECTS\ies-disk\asp-net-core\IesDisk.ApiProcess\wwwroot\C.bat";
var appath = @"D:\PROJECTS\ies-disk\asp-net-core\IesDisk.ApiProcess\wwwroot";

RunMiningProgram(apppath, path);

当我们运行程序时,bat 文件的结果会出现在 Kestrel 打开的控制台屏幕上。如何打开两个不同的 cmd 应用程序,而不是在 Kestrel 控制台中显示它们。

如果我想象我的问题,我希望打开两个不同的 cmd 屏幕。

【问题讨论】:

  • 您可能需要启动新的命令提示符。看看这个问题stackoverflow.com/questions/36776854/…
  • 您不想在屏幕上看到它(这肯定是个问题)?有什么问题?
  • 问题是当我使用 process.start(batfilepath) 运行 bat 文件时。它没有打开新的 cmd 屏幕。但我想要它。
  • @BurakErgün 可能打开了它,但在 asp.net 的帐户下 - 记住这是服务器端编程 - 谁将在服务器上监视此命令?

标签: c# asp.net api asp.net-core kestrel


【解决方案1】:
public static void RunMiningProgram(string appPath, string batFilePath)
{
    for (int i = 0; i < 2; i++)
    {
        Process.Start("cmd.exe", $"/c start /D {appPath} {appPath}{batFilePath}");
    }
}

static void Main(string[] args)
{
    RunMiningProgram("C:\\", "hello.bat");
}

【讨论】:

  • $"/c start /D {appPath} {appPath}{batFilePath}".What's for /D
  • @Burak 指定我认为的工作目录。检查 cmd 启动文档。它让您不必通过设置 p.StartInfo.WorkingDirectory 来指定它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 2019-08-12
  • 2022-08-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
相关资源
最近更新 更多