调用exe后,批处理脚本错误地退出

时间:2014-10-01 18:34:08

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

好的,所以我有一个名为WC_Error_Resolution的程序,它是用C#编写的(C#Console Application with .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 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上编写脚本。 Windows Server 2012 R2。程序无法在Windows Server 2008 R2上执行,也不会显示任何错误。该脚本根本不会执行程序调用下面的程序或命令。快速说明,这是一个32位程序,在启用了WoW64的64位环境中运行。在Windows Server 2008 R2上运行的.NET应用程序是否存在一些我不知道的问题?

1 个答案:

答案 0 :(得分:0)

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

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

如果程序与控制台分离,则程序运行时批处理文件会继续,START /B /WAIT正确处理errorlevel。如果您无法理解为什么C#程序与控制台分离,您可能想要根据C#程序的摘录提出另一个问题。