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

标签 c# windows batch-file cmd windows-server-2008-r2

好吧,我有一个名为 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/

相关文章:

c# - 获取具有条件的实体对象及其子实体(使用 Dynamic Linq)

windows - Powershell脚本无法读取AD电话号码

c++ - Windows下如何获取时区缩写

windows - 如何从 DOS 批处理命令发送电子邮件?

c# - 在razor View 中,如何将模型属性传递给JavaScript函数并显示返回值?

c# - 如何创建服务器端定时事件?

windows - 在 CMD 搜索中排除 Windows 文件夹

windows - 将命令的结果保存在变量中,Windows 批处理

c# - 使用 Linq 获取 List<string> 集合中的子字符串

windows - ID2D1Bitmap 和 IWicBitmap 之间的区别