Script batch - Codice di ritorno
Per impostazione predefinita, quando l'esecuzione di una riga di comando viene completata, dovrebbe restituire zero quando l'esecuzione ha esito positivo o diverso da zero quando l'esecuzione fallisce. Quando uno script batch restituisce un valore diverso da zero dopo che l'esecuzione non riesce, il valore diverso da zero indicherà qual è il numero di errore. Utilizzeremo quindi il numero di errore per determinare di cosa si tratta e risolverlo di conseguenza.
Di seguito sono riportati il codice di uscita comune e la loro descrizione.
Codice di errore | Descrizione |
---|---|
0 | Programma completato con successo. |
1 | Funzione errata. Indica che l'azione ha tentato di eseguire un comando non riconosciuto nel prompt dei comandi di Windows cmd.exe. |
2 | Il sistema non trova il file specificato. Indica che il file non può essere trovato nella posizione specificata. |
3 | Il sistema non può trovare il percorso specificato. Indica che non è possibile trovare il percorso specificato. |
5 | L'accesso è negato. Indica che l'utente non ha diritti di accesso alla risorsa specificata. |
9009 0x2331 |
Il programma non è riconosciuto come comando interno o esterno, programma eseguibile o file batch. Indica che il comando, il nome dell'applicazione o il percorso sono stati scritti in modo errato durante la configurazione dell'azione. |
221225495 0xC0000017 -1073741801 |
Memoria virtuale insufficiente disponibile. Indica che Windows ha esaurito la memoria. |
3221225786 0xC000013A -1073741510 |
L'applicazione è terminata come risultato di un CTRL + C. Indica che l'applicazione è stata terminata dall'input della tastiera dell'utente CTRL + C o CTRL + Break o dalla chiusura della finestra del prompt dei comandi. |
3221225794 0xC0000142 -1073741502 |
L'applicazione non é stata inizializiata correttamente. Indica che l'applicazione è stata avviata su un desktop per il quale l'utente corrente non dispone dei diritti di accesso. Un'altra possibile causa è che gdi32.dll o user32.dll non sono stati inizializzati. |
Livello di errore
La variabile d'ambiente% ERRORLEVEL% contiene il codice di ritorno dell'ultimo programma o script eseguito.
Per impostazione predefinita, il modo per verificare la presenza di ERRORLEVEL è tramite il codice seguente.
Sintassi
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
È comune utilizzare il comando EXIT / B% ERRORLEVEL% alla fine del file batch per restituire i codici di errore dal file batch.
EXIT / B alla fine del file batch interromperà l'esecuzione di un file batch.
Utilizzare EXIT / B <exitcodes> alla fine del file batch per restituire codici di ritorno personalizzati.
La variabile di ambiente% ERRORLEVEL% contiene l'ultimo livello di errore nel file batch, ovvero i codici di errore più recenti dall'ultimo comando eseguito. Nel file batch, è sempre buona norma utilizzare variabili di ambiente invece di valori costanti, poiché la stessa variabile viene espansa a valori diversi su computer diversi.
Diamo un'occhiata a un rapido esempio su come verificare la presenza di codici di errore da un file batch.
Esempio
Supponiamo di avere un file batch chiamato Find.cmd che ha il codice seguente. Nel codice, abbiamo chiaramente detto che se non troviamo il file chiamato lists.txt, allora dovremmo impostare il livello di errore su 7. Allo stesso modo, se vediamo che la variabile userprofile non è definita, dovremmo impostare il codice del livello di errore su 9.
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Supponiamo di avere un altro file chiamato App.cmd che chiama prima Find.cmd. Ora, se Find.cmd restituisce un errore in cui imposta il livello di errore su un valore maggiore di 0, allora uscirà dal programma. Nel seguente file batch, dopo aver chiamato Find.cnd find, controlla effettivamente se il livello di errore è maggiore di 0.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Produzione
Nel programma sopra, possiamo avere i seguenti scenari come output:
Se il file c: \ lists.txt non esiste, non verrà visualizzato nulla nell'output della console.
Se la variabile userprofile non esiste, non verrà visualizzato nulla nell'output della console.
Se entrambe le condizioni precedenti vengono soddisfatte, la stringa "Completamento riuscito" verrà visualizzata nel prompt dei comandi.
Loop
Nel capitolo sul processo decisionale, abbiamo visto dichiarazioni che sono state eseguite una dopo l'altra in modo sequenziale. Inoltre, le implementazioni possono essere eseguite anche in Batch Script per alterare il flusso di controllo nella logica di un programma. Sono quindi classificati in flussi di dichiarazioni di controllo.
S.No | Loop e descrizione |
---|---|
1 | While Statement Implementation Non è disponibile un'istruzione while diretta in Batch Script, ma possiamo eseguire un'implementazione di questo ciclo molto facilmente utilizzando l'istruzione if e le etichette. |
2 | Istruzione For - Elenca implementazioni Il costrutto "FOR" offre capacità di loop per i file batch. Di seguito è riportato il costrutto comune dell'istruzione "for" per lavorare con un elenco di valori. |
3 | Looping through Ranges L'istruzione "for" ha anche la capacità di spostarsi attraverso un intervallo di valori. Di seguito è riportata la forma generale della dichiarazione. |
4 | Classico per implementazione in loop Di seguito è riportata la classica istruzione "for" disponibile nella maggior parte dei linguaggi di programmazione. |
Ciclo tra gli argomenti della riga di comando
L'istruzione "for" può essere utilizzata anche per controllare gli argomenti della riga di comando. L'esempio seguente mostra come utilizzare l'istruzione "for" per scorrere gli argomenti della riga di comando.
Esempio
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Produzione
Supponiamo che il nostro codice sopra sia memorizzato in un file chiamato Test.bat. Il comando precedente produrrà il seguente output se il file batch passa gli argomenti della riga di comando di 1,2 e 3 come Test.bat 1 2 3.
1
2
3
S.No | Loop e descrizione |
---|---|
1 | Implementazione della dichiarazione di interruzione L'istruzione break viene utilizzata per alterare il flusso di controllo all'interno di cicli all'interno di qualsiasi linguaggio di programmazione. L'istruzione break viene normalmente utilizzata nei costrutti di ciclo e viene utilizzata per causare la terminazione immediata del ciclo di inclusione più interno. |