controllare se il comando è stato eseguito correttamente in un file batch

Come all’interno di un file batch per verificare se il comando

start "" javaw -jar %~p0/example.jar

era successo o il prodotto di un errore?

Voglio usare if/else echo questa info.

InformationsquelleAutor 31415926 | 2013-02-04



5 Replies
  1. 31

    È possibile utilizzare

    if errorlevel 1 echo Unsuccessful
    

    in alcuni casi. Questo dipende dall’ultimo comando di restituzione di un apposito codice di uscita. Non sarà in grado di dire che c’è qualcosa di sbagliato se il programma restituisce normalmente, anche se c’era una condizione anormale.

  2. 58

    Questo probabilmente non funziona con start, che apre una nuova finestra, ma per rispondere alla tua domanda:

    Se il comando restituisce un livello di errore, è possibile controllare i seguenti modi

    Dal Livello Di Errore Specifico

    commandhere
    if %errorlevel%==131 echo do something
    

    Da Se Qualsiasi Errore

    commandhere || echo what to do if error level ISN'T 0
    

    Da Se Nessun Errore

    commandhere && echo what to do if error level IS 0
    

    Se non viene restituito un errore, ma non dare in uscita, si può prendere in una variabile e determinare l’uscita, esempio (nota il token e delims sono solo esempi e probabilmente non con tutti i caratteri speciali)

    Mediante L’Analisi Completa Uscita

    for /f "tokens=* delims=" %%a in ('somecommand') do set output=%%a
    if %output%==whateveritwouldsayinerror echo error
    

    O si può solo cercare una singola frase in uscita come la parola Errore

    Controllando Stringa

    commandhere | find "Error" || echo There was no error!
    commandhere | find "Error" && echo There was an error!
    

    E si potrebbe anche mescolare insieme (basta ricordarsi di fuga | con ^| se in un for istruzione)

    Spero che questo aiuta.

  3. 9

    La maggior parte dei comandi/programmi restituiscono 0 in caso di successo e qualche altro valore, chiamato errorlevel, per segnalare un errore.

    È possibile controllare questo in lotti per esempio:

    call <THE_COMMAND_HERE>
    if %ERRORLEVEL% == 0 goto :next
    echo "Errors encountered during execution.  Exited with status: %errorlevel%"
    goto :endofscript
    
    :next
    echo "Doing the next thing"
    
    :endofscript
    echo "Script complete"
    
  4. 2

    Male che ho avuto un momento difficile trovare la risposta a questo… Qui è:

    cd thisDoesntExist
    if %errorlevel% == 0 (
      echo Oh, I guess it does
      echo Huh.
    )
    
  5. 1

    Non so se javaw scrivere la variabile %errorlevel%, ma potrebbe.

    echo %errorlevel% dopo aver eseguito direttamente da vedere.

    Oltre a questo, è possibile reindirizzare l’output di javaw di un file, quindi utilizzare find per vedere che cosa i risultati sono stati. Senza sapere l’uscita di esso, non posso aiutarti.

Lascia un commento