Il tuo problema non è goto, la sua che errorlevel richiede un trattamento speciale, non è come una variabile d'ambiente normale. L'unico test che puoi eseguire con errorlevel è verificare se è maggiore o uguale al valore.
in modo da mettere alla prova errorlevel valori dal più alto al più basso, perché se errorlevel 1 poi if errorlevel 1
sarà vero, ma if errorlevel 0
sarà anche essere vero
setlocal
set /A sample =1
:first
type C:\test.txt | find "inserted"
if errorlevel 1 goto exam
if errorlevel 0 goto test
:test
echo "testloop" >> C:\testloop.txt
set /A sample = %sample% + 1
if %sample% LEQ 4 goto first
:exam
echo "exam loop" >> C:\examloop.txt
endlocal
se si dispone di estensioni ai comandi abilitati, e là non è una variabile di ambiente chiamata ERRORLEVEL (case insensitive). Quindi in teoria puoi usare% ERRORLEVEL% come una normale variabile d'ambiente. Quindi questo dovrebbe funzionare anche
setlocal EnableExtensions
set /A sample =1
:first
type C:\test.txt | find "inserted"
if %errorlevel% EQU 1 goto exam
if %errorlevel% EQU 0 goto test
:test
echo "testloop" >> C:\testloop.txt
set /A sample = %sample% + 1
if %sample% LEQ 4 goto first
:exam
echo "exam loop" >> C:\examloop.txt
fonte
2010-02-04 07:26:59
Stephan, grazie t o formattato correttamente, non è il motivo per cui il codice è in formato non appropriato. – user9133538
perché non hai formattato nulla. Vedi [qui] (https://stackoverflow.com/editing-help) per come farlo. – Stephan