Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    188

    [DOS] Errorlevel e ciclo FOR

    Ciao.
    Ho bisogno di utilizzare il settaggio di %errorlevel% di un comando FINDSTR per impostare una condizione IF:

    codice:
    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.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    EQU - Uguale

  3. #3
    La soluzione standard in casi del genere, fin dai primordi del DOS, consiste effettivamente nello spostare l'inteera sequenza di comandi in un secondo file batch, richiamato dal ciclo FOR in modo opportuno e con adeguati parametri.

    Altre soluzioni prevedono il ricorso a semantiche estese, supportate da interpreti dei comandi alternativi, sia di Microsoft che di terze parti.
    • Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.

  4. #4
    Puoi anche salvare il valore di %errorlevel% subito dopo la findstr in un'altra variabile usando il comando set.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    188
    Scusatemi , ho scritto una vaccata: è solo un problema di espansione ritardata delle variabili.
    codice:
    SETLOCAL EnableDelayedExpansion
    FOR /l %%A IN () DO (
    FINDSTR Test Prova.txt
    ECHO errorlevel=%errorlevel%
    PAUSE
    )
    questo esempio restituisce il codice giusto.
    Grazie lo stesso.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.