Comandi di pausa e attesa dei file batch: come controllare il flusso dei tuoi script

Comandi Di Pausa E Attesa Dei File Batch Come Controllare Il Flusso Dei Tuoi Script



Nello scripting batch su Windows, gli sviluppatori possono controllare il flusso degli script utilizzando varie tecniche o metodi per introdurre pause o attese. I comandi 'pausa' e 'attesa' sono due modi per controllare il flusso dei file batch. Il comando 'pausa' interrompe l'esecuzione di un file batch presentando il messaggio 'Premere un tasto qualsiasi per continuare...'. Il file batch non può essere eseguito finché l'utente non preme un tasto. L'esecuzione del file batch viene sospesa per il numero di secondi indicato dall'istruzione wait.

Comando di pausa file batch

Il comando 'pausa' di un file batch interrompe l'esecuzione del file batch durante la visualizzazione del messaggio sulla riga di comando. Il file batch non verrà eseguito finché l'utente non preme un tasto. È utile il comando che interrompe l'esecuzione successiva. È utile eseguire direttamente il file batch e vedere l'output desiderato apparire sullo schermo.







La sintassi del comando “pausa” è:



Pausa

Richiedi input all'utente

Il comando 'pausa' nel seguente script batch mostra il messaggio 'Premere un tasto qualsiasi per continuare...' quando l'utente esegue questo file batch. Prima che il file batch passi al comando “dir”, l'utente deve premere un tasto.



@eco disattivato

rem Questo file batch viene messo in pausa per consentire all'utente di premere un tasto.

echo Ciao, benvenuto alla dimostrazione del comando PAUSE.

echo L'esecuzione dello script continua dopo la pausa.

pausa

rem Questo file batch continua con il comando successivo.

eco Grazie!

Voi





Quando l'utente preme un tasto qualsiasi utilizzando la tastiera, questo processo batch continua:



Comando di attesa file batch

Il codice che hai fornito è un file batch che apre due programmi: Blocco note e Paint. Il codice è il seguente:

@eco disattivato

echo Avvio del primo programma.

START /B /WAIT notepad.exe

echo Blocco note aperto in background con successo

echo Avvio del secondo programma.

AVVIO /ATTENDERE mspaint.exe

echo Paint è stato aperto con successo.

cmd/k

La prima riga, '@echo off', impedisce al file batch di visualizzare i comandi mentre vengono eseguiti.

L'utente viene semplicemente informato che il primo programma viene avviato dalla seconda riga che è 'echo Starting First Program'.

La terza riga, “START /B /WAIT notepad.exe”, apre il programma Blocco note in una finestra in background e attende che finisca prima di continuare. L'interruttore '/B' indica al comando START di eseguire il programma in una finestra in background, mentre l'interruttore '/WAIT' indica al comando START di attendere il completamento del programma prima di continuare.

La quarta riga legge l'eco del Blocco note. Quando Blocco note viene aperto con successo in background, avvisa semplicemente l'utente con un messaggio.

La quinta riga, 'echo Starting Second Program', visualizza semplicemente un messaggio all'utente che informa che il secondo programma è in fase di avvio.

La sesta riga, “START /WAIT mspaint.exe”, apre il programma Paint in una finestra in background e non ne aspetta la fine per continuare.

La settima riga, 'echo Paint è stato aperto con successo', mostra semplicemente un messaggio all'utente che Paint è stato aperto con successo.

L'ottava riga, 'cmd /k', apre una nuova finestra del prompt dei comandi e mantiene aperta la finestra del prompt dei comandi corrente.

Utilizzo di un ciclo per ritardi personalizzati

Possiamo utilizzare un ciclo per ritardi personalizzati nel processo batch. Ecco un esempio:

In questo esempio, il primo messaggio viene mostrato all'utente quando viene eseguito questo file batch. Il primo messaggio viene quindi visualizzato nuovamente una volta iniziato il ciclo 'for'. Il comando timeout interrompe il file batch per un secondo prima di visualizzare il secondo messaggio. Il messaggio finale viene quindi visualizzato dopo un totale di 10 iterazioni.

@eco disattivato

echo Dimostrazione del ritardo utilizzando Loop

for /l  %%i in (1,1,10) fai (

timeout /t 1 /nobreak > nul

echo Questo messaggio viene visualizzato dopo %%i  secondo(i)

)

echo Questo messaggio mostrava un ritardo di 10 secondi.

Utilizzo del timeout per il ritardo

Il comando di timeout di un file batch sospende l'esecuzione del file batch per un numero predeterminato di secondi. La sintassi è riportata qui:

timeout /t [/nobreak]

L'opzione '/t' specifica il tempo di attesa in secondi. L'opzione '/nobreak' disabilita la pressione dei tasti da parte dell'utente per interrompere il ritardo.

Il comando “timeout” può essere utilizzato per:

  • Posticipare l'esecuzione di un file batch per un periodo di tempo predeterminato
  • Impedisce che un'azione su un file batch venga interrotta dall'utente
  • Crea un'esperienza più user-friendly impedendo all'utente di dover premere un tasto per continuare

Ad esempio, il seguente file batch viene messo in pausa per 10 secondi:

@eco disattivato

echo Ciao, l'esecuzione dello script continua dopo 10 secondi di ritardo

timeout /t 10

eco Grazie!

Come dimostrato nello screenshot seguente, un timer è in esecuzione e attende che l'utente interrompa il comando 'timeout' premendo un tasto qualsiasi. Se l'utente preme un tasto qualsiasi, il processo si interrompe e passa al comando successivo nel file batch:

L'utente nello screenshot seguente interrompe il comando “timeout” dopo 5 secondi, visualizzando il messaggio “Grazie!” Messaggio:

Lo screenshot seguente mostra come il messaggio 'Grazie!' il messaggio impiega 10 secondi per essere stampato sullo schermo se l'utente finale non interrompe l'istruzione di timeout:

Ecco il codice aggiornato che è stato modificato per includere l'interruttore no-break che impedisce all'utente finale di interrompere un processo di file batch:

@eco disattivato

rem Questo file batch viene messo in pausa per 10 secondi

echo Ciao, l'esecuzione dello script continua dopo 10 secondi di ritardo

timeout /t 10 /nobreak

rem Dopo 10 secondi questo comando verrà visualizzato sulla schermata di richiesta

eco Grazie!

Ecco l'output del codice precedente:

La riga di comando richiede all'utente di digitare Y o N se l'utente utilizza il comando 'CTRL+C'. Se l'utente fa clic su Y, questo processo batch viene interrotto:

I comandi 'pausa', 'wait' e 'timeout' sono i modi per controllare il flusso dei nostri script. L'esecuzione dello script viene sospesa quando viene utilizzato il comando 'pause' e viene interrotta per un periodo di tempo predeterminato quando viene utilizzato il comando 'timeout'.

Utilizzo di istruzioni condizionali per il controllo del flusso

Le istruzioni condizionali sono la tecnica più comunemente utilizzata per modificare il flusso di uno script in base a una determinata circostanza. A seconda che una condizione sia vera o falsa, l'istruzione 'if' esegue una delle due parti di esecuzione del codice. L’istruzione “if” è strutturata come segue:

if altrimenti

Esempio:

Apri il Blocco note o qualsiasi editor di testo di tua scelta e scrivi il seguente codice che inizializza il valore della variabile inputValue su 1 nella terza riga. Il valore della variabile inputValue viene quindi controllato utilizzando un'istruzione 'if' in fase di esecuzione per vedere se è uguale a 1, 2 o 3. In tal caso, il messaggio appropriato viene stampato sullo schermo della riga di comando. In caso contrario, viene visualizzato il messaggio finale. In un'istruzione condizionale nota come 'if', il valore inputValue di una variabile viene controllato per vedere se è uguale a 1, 2 o 3. In tal caso, viene eseguito uno dei due blocchi di codice. Se la condizione è vera, l'istruzione condizionale non fa nulla.

@eco disattivato

rem Questo script verifica la variabile inputValue rispetto ai valori 1, 2 e 3.

impostare inputValue=1

se '%inputValue%'=='1' (

echo Il valore di input è uguale a 1.

) altrimenti se '%inputValue%'=='2' (

echo Il valore di input è uguale a 2.

) altrimenti se '%inputValue%'=='3' (

echo Il valore di input è uguale a 3.

) altro (

echo La variabile inputValue non è uguale a 1, 2 o 3.

)

Produzione:

Conclusione

Il flusso degli script può essere controllato e i processi possono essere automatizzati sul sistema operativo Windows utilizzando comandi, loop e istruzioni condizionali come 'if'. Gli sviluppatori possono interrompere l'esecuzione di uno script o aggiungere ritardi con il comando 'pausa' utilizzando 'timeout' o 'ping'. Sebbene non sia presente un'istruzione 'switch' incorporata nello scripting batch, possiamo simularla con le espressioni 'if' e 'else if'. Il test è fondamentale per garantire che questi script funzionino come previsto nel contesto appropriato. Questi script sono utili per l'automazione, la gestione del sistema e la manipolazione dei file.