如何确定csc.exe编译是否成功

时间:2015-11-08 20:26:44

标签: c# windows batch-file

我正在尝试使用Windows中的批处理文件随时编译一些c文件。

以下是.bat文件

C:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /t:exe /out:the.exe %1
the.exe

我的文件有一个Console.Read()调用来阻止窗口关闭,并让用户看到执行的输出。我遇到的问题是,如果编译由于某种原因失败,窗口会显示编译问题并立即关闭,因为它永远不会到达Read()调用。

我可以在pause文件的末尾使用.bat但是如果编译/执行成功,我需要按两次键关闭窗口。

我想知道的是编译是否成功。如果成功则执行the.exe或者如果不成功则执行可执行文件,而不是pause或其他内容来停止窗口,以便我可以看到错误。< / p>

1 个答案:

答案 0 :(得分:3)

假设编译器工具<script> var app = angular.module('myApp', []); app.controller('customersCtrl', function($scope, $http,$filter) { var param = getParameterByName('id'); $http.get("http://socialdeal4u.com/demo/survey/api-delete.php?id="+param) .success(function (response) { $scope.x = response; }); </script> 返回错误代码(csc.exe),您可以像这样附加ErrorLevel

&& the.exe || pause

"C:\windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /t:exe /out:the.exe "%~1" && the.exe || pause &&是条件命令分隔符。第一个在没有错误的情况下执行以下命令,即返回代码||(无错误);出现错误时的第二个(非0返回码)。

请注意,此方法只能区分编译成功或失败。可能会出现警告,这些警告可能不会反映在返回的错误代码中。

要确定是否返回了内置变量0可以访问的错误代码,请将ErrorLevel放在echo %ErrorLevel% & pause命令行之后并运行脚本,并且一旦没有引起编译错误。为此,您需要确保重置错误状态 - 通过每次重新启动命令提示符,或者通过在每次尝试之前执行csc.exe将其重置为0来重置错误状态