如何在 C# 中 运行 下一个批处理文件命令

How to run next batch file command in C#

我有两个批处理文件,

第一个,包含多个命令,每个命令有两个参数,它调用batch2 例如

C:\batch2 test1 "Hello this is a test"
C:\batch2 test2 "Hello this is a test as well"

第二个,包含 .exe 调用,并从 batch1 获取参数

C:\test.exe %1 %2

.exe 执行这些操作,其结尾如下:

Console.WriteLine("complete", dir, output);
output.Close();
Console.Read();

问题是,在 batch1 的第一行是 运行 之后,第二行永远不会是 运行。我可以在 .exe(C# 程序)的末尾添加什么来为每个后续行保留 batch1 运行ning?

或者,如何在第一行之后保留 batch1 运行ning?

您不能向可执行文件添加任何对您有帮助的内容。它 等待 。最好的情况是您可以 删除 等待的行。

如果不能,您可以修改批处理文件,使其不等待可执行文件完成:

start C:\test.exe %1 %2

这使得您的两个可执行文件 运行 并行。

或者您可以将 Return 通过管道传输到您的 exe:

echo.|C:\test.exe %1 %2

哈克,但它应该工作。

似乎对批处理调用与 C# 调用有误解。

实际上,根据您的代码,您不调用 batch2,而只是运行它,
什么不给 batch1 留下 return 的选项。请参阅 call /? 或访问 http://ss64.com/nt/call.html

:: Batch1.cmd
@Echo off
Call "C:\batch2.cmd" test1 "Hello this is a test"
Call "C:\batch2.cmd" test2 "Hello this is a test as well"

:: Batch2.cmd
@Echo off
C:\test.exe %*

如果您不更改 Batch2.cmd 中的任何参数,您可以将它们全部原样传递给 %*