gpt4 book ai didi

C#通过进程通过cmd调用带有错误重定向和exe的批处理

转载 作者:行者123 更新时间:2023-11-30 18:03:09 26 4
gpt4 key购买 nike

我使用以下几行来创建一个流程:

process.StartInfo.FileName = "cmd.exe";
process.StartInfo.WorkingDirectory = buildProject.DirectoryName;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;

然后我启动进程并向它传递一些命令:

process.Start();

StreamWriter stream = process.StandardInput;

// call batch
stream.WriteLine(@"call ""test.bat""");

// call exe
stream.WriteLine("echo msbuild!");

// exit-command
stream.WriteLine("exit");

在批处理文件包含两个 nul-redirects 之前一切正常:

@call :Jump_1
@call :Jump_2

@goto end


@REM -----------------------------------------------------------------------
:Jump_1
@echo Jump_1
@call :Jump_1_1 1>nul 2>&1 REM critical!!!
@exit /B 0

:Jump_1_1
@echo Jump_1_1
@exit /B 0


@REM -----------------------------------------------------------------------
:Jump_2
@echo Jump_2
@call :Jump_2_1 1>nul 2>&1 REM critical!!!
@exit /B 0

:Jump_2_1
@echo Jump_2_1
@exit /B 0


@REM -----------------------------------------------------------------------
@echo End
:end

在这种情况下,进程会立即停止。 StandardOut 显示:

Microsoft Windows XP [Version 5.1.2600]

(C) Copyright 1985-2001 Microsoft Corp.

C:\Entwicklung\ProcessTest\ProcessTest\bin\Debug>call "test.bat"

Jump_1

Jump_2

只有在有两个重定向的情况下它才会崩溃,如果我删除一个都很好。

因为原始脚本是随 VS2010 一起提供的,所以我无法更改脚本。


编辑:我用更多细节更新了问题。

最佳答案

是重定向到nul失败了,还是从stderror重定向到stdout (2>&1)

您的代码没有将 RedirectStandardError 设置为 true,您应该将其设置为 true,它应该可以工作。

关于C#通过进程通过cmd调用带有错误重定向和exe的批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7501064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com