gpt4 book ai didi

c# - 批处理脚本在调用 exe 后错误退出

转载 作者:可可西里 更新时间:2023-11-01 09:37:45 26 4
gpt4 key购买 nike

好吧,我有一个名为 WC_Error_Resolution 的程序,它是用 C# 编写的(C# 控制台应用程序与 .NET 4.0)。该程序根据运行程序时执行的操作返回 0、1 或 2。如果我从 cmd.exe 调用它,一切正常。但是,这是我感到困惑的地方。我有一个测试批处理脚本(真正的脚本要大得多),它是这样调用的:

    ECHO Start
WC_Error_Resolution.exe file1.xml file2.xml inifile.ini log1.log log2.log
ECHO ERRORLEVEL=%ERRORLEVEL%

这里的问题是第二个 echo 永远不会被执行。脚本到达程序的第二个,它调用它并退出批处理脚本。然后我决定尝试:

    ECHO Start
START /B /WAIT "" WC_Error_Resolution.exe file1.xml file2.xml inifile.ini log1.log log2.log
ECHO ERRORLEVEL=%ERRORLEVEL%

这一次,它按预期工作。我已经创建了大量像第一个示例一样调用 .exe 文件的批处理脚本,并且从未遇到过这样的问题。什么会导致脚本在 WC_Error_Resolution.exe 程序返回后停止执行?

编辑
---------------------------------------------- ---
所以现在它出现在我的另一个程序中。这两个程序都引用了 System.Xml.Linq。这些程序可以在 Windows 7、Windows 8 和 Windows Server 2012 R2 上编写脚本。这些程序无法在 Windows Server 2008 R2 上执行并且没有显示任何错误。该脚本从不执行程序调用下方的程序或命令。快速说明一下,这是一个在启用 WoW64 的 64 位环境中运行的 32 位程序。在 Windows Server 2008 R2 上运行的 .NET 应用程序是否存在一些我不知道的问题?

最佳答案

这在问题的答案中得到了回答(通过使用 C++ 示例):

How do I get the application exit code from a Windows command line?

如果程序从控制台分离,则批处理文件会在程序运行时继续,START/B/WAIT 是获取 errorlevel 的正确解决方法。如果您看不出 C# 程序与控制台分离的原因,您可能想根据 C# 程序的摘录提出另一个问题。

关于c# - 批处理脚本在调用 exe 后错误退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148180/

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