Ich habe diesen Code in meiner Datei build.batcmd msbuild Errorlevel ist immer 0
for /R %~dp0 %%A In (*.sln) do (
c:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe %%A /t:rebuild /nologo /verbosity:minimal /flp:Verbosity=detailed;LogFile=%~dp0\Logs.txt;append=true /m /p:Configuration=Debug;Platform="Any CPU" /p:VisualStudioVersion="12.0"
if not %errorlevel%==0 set Failed+=1
pause)
Mein Problem ist, dass% Errorlevel% immer 0, auch wenn Protokolldatei haben Fehler und Warnungen.
für die fehlerhaften Fälle zu verwenden, was den Wert des Error-ist, bevor Ihr Zustand also könnten Sie vorübergehend ECHO% Error-% vor Ihrer if-Anweisung hinzufügen. –
Verwenden Sie entweder 'SETLOCAL EnableDelayedExpansion' und'! Errorlevel! 'Anstelle von'% errorlevel% 'oder (besser) kehren Sie zur' If ErrorLevel 1' Syntax zurück. Die Einstellung [EnabledDelayedExpansion] (http://ss64.com/nt/setlocal.html) führt dazu, dass jede Variable zur Ausführungszeit und nicht zur Parsezeit erweitert wird: Beim Parsen wertet der Befehlsinterpreter die Variablen _line-by_line_ und/oder _command_by_command_ aber aus Alle Codebausteine in '()' Klammern gelten als ein Befehl. Andererseits sollte 'If ErrorLevel 1' als _if_' ErrorLevel' gelesen werden _ ist größer als oder gleich '1' also _nicht gleich_'0' (_zero_) – JosefZ
Danke für deine Antwort, aber ich habe immer noch ein Problem, wie ich immer 0 im Fehlerlevel sehe. Können Sie bitte die endgültige Version meines Codes als Antwort zur Verfügung stellen? –