Ho questo codice nel mio file build.batcmd msbuild errorlevel è sempre 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)
mio problema è che% errorlevel% sempre 0 anche quando file di log hanno errori e avvisi. !
Utilizzare uno SETLOCAL enabledelayedexpansion e errorlevel:
per i casi in mancanza di qual è il valore di ERRORLEVEL prima condizione per esempio si potrebbe aggiungere temporaneamente ECHO% ERRORLEVEL% prima istruzione if. –
Usa 'SETLOCAL EnableDelayedExpansion' e'! Errorlevel! 'Invece di'% errorlevel% 'o (meglio) ritorna alla sintassi' If ErrorLevel 1'. Impostando [EnabledDelayedExpansion] (http://ss64.com/nt/setlocal.html) ogni variabile verrà espansa al momento dell'esecuzione piuttosto che in fase di analisi: l'analisi, l'interprete dei comandi valuta le variabili _line-by_line_ e/o _command_by_command_ ma tutto il blocco di codice tra parentesi '()' considera un comando. D'altra parte, 'Se ErrorLevel 1' deve essere letto come _if_' ErrorLevel' _è maggiore o uguale a_ '1' quindi _non uguale a_' 0' (_zero_) – JosefZ
Grazie per la tua risposta, ma ho ancora un problema, come vedo sempre 0 in errorlevel. Potete fornire la versione finale del mio codice come risposta? –