8

但它不起作用 - 意味着 java 代码没有被执行。尽管在 Windows 资源管理器中单击或在命令行中运行时批处理文件运行良好..

由于当批处理文件是单个 DOS 命令时这可以正常工作,所以我认为这与 Java 代码需要大约 20 分钟才能运行的事实有关。我正在使用以下代码

var si = new ProcessStartInfo();
si.CreateNoWindow = true;
si.FileName = batchFileName;
si.UseShellExecute = false;
Process.Start(si);

我究竟做错了什么?

4

3 回答 3

8

设置UseShellExecute为 true,因此它会加载 cmd.exe 来运行批处理文件。

于 2010-03-04T21:01:27.367 回答
0

检查这个- ProcessStartInfo 的批处理文件包装器:

C:\>ProcessStartJS.bat "cmd.exe" -arguments "/c pause" -style Minimized -priority High -newWindow yes -useshellexecute yes

Started: cmd.exe /c pause
PID:6540
于 2020-11-11T13:55:26.113 回答
0

正如 Lucas Jones 在评论中提到的,如果您不想使用 ShellExecute,请这样做:

string fullBatPath = @"C:\path with space\file.bat";

var process = new Process()
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        Arguments = $"cmd /C \"{fullBatPath}\"",
        UseShellExecute = false,
        CreateNoWindow = true,
    }
};
process.Start();
于 2022-01-21T11:39:20.997 回答