PDA

View Full Version : [DOS] Errorlevel in un ciclo FOR


23Andrea
16-12-2014, 18:53
Ciao.
Ho bisogno di utilizzare il settaggio di %errorlevel% di un comando FINDSTR per impostare una condizione IF:

FINDSTR /c:"stringa di ricerca" Unità:\percorso\nomefile
IF %errorlevel% ECU 0 (
...
)

Il problema è che questa sequenza di comandi si trova all'interno di un ciclo FOR /f, e quindi il valore di errorlevel di FINDSTR viene "nascosto", presumo, dal valore di errorlevel associato al ciclo.
C'è un modo per ovviare a questa cosa? (a parte, chiaramente, spostare la sequenza fuori dal ciclo).
Grazie.

Daniels118
17-12-2014, 08:23
Ti consiglio di postare il codice completo per evitare incomprensioni.
Supponendo che non ci sia alcuna istruzione tra findstr e il successivo if, direi che il fatto di inserire quella sequenza in un ciclo non "nasconde" il return code di findstr.

23Andrea
17-12-2014, 15:28
Supponendo che non ci sia alcuna istruzione tra findstr e il successivo if, direi che il fatto di inserire quella sequenza in un ciclo non "nasconde" il return code di findstr.

Vero!
Scusate: ho scritto una vaccata, è semplicemente un problema di espansione ritardata delle variabili:doh: .
SETLOCAL EnableDelayedExpansion
FOR /l %%A IN () DO (
FINDSTR Test Prova.txt
ECHO errorlevel=!errorlevel!
PAUSE
)

questo esempio restituisce il codice esatto.
Grazie lo stesso.