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

时间:2018-07-24 15:40:07

标签: c# batch-file batch-processing

我有两个批处理文件,

第一个包含多个命令,每个命令带有两个参数,它调用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在随后的每一行中运行?

或者,如何使batch1在第一行之后运行?

2 个答案:

答案 0 :(得分:0)

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

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

start C:\test.exe %1 %2

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

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

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

强悍,但应该可以。

答案 1 :(得分:0)

与C#成批调用似乎是一种误解。

实际上从您的代码中您不调用 batch2,而只需运行它,
没有什么选择可以返回到batch1。查看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中的任何参数,则可以使用%*将它们全部不变地传递给它们