【问题标题】:How to run next batch file command in C#如何在 C# 中运行下一个批处理文件命令
【发布时间】:2023-04-08 06:24:01
【问题描述】:

我有两个批处理文件,

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

【问题讨论】:

  • 您可能想研究线程和多线程。这使您可以启动两个长进程,而不必等待它们完成后再开始下一个 exe。

标签: c# batch-file batch-processing


【解决方案1】:

似乎对批处理与 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 中的任何参数,您可以使用%* 将它们一并传递

【讨论】:

    【解决方案2】:

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

    如果你不能,你可以修改你的批处理文件而不是等待可执行文件完成:

    start C:\test.exe %1 %2
    

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

    或者您可以将 Return 传递给您的 exe:

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

    Hacky,但它应该可以工作。

    【讨论】:

    • 我明白,但我需要运行批处理 1 的后续行。您的解决方案使 .exe 返回,但它只运行了 batch1 的第一行。
    • 你试过启动命令了吗?它不应该等待您的 exe 完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2012-10-27
    • 2015-11-15
    相关资源
    最近更新 更多