5 istruzioni IF da utilizzare per script batch di Windows più intelligenti
Esistono diversi tipi di istruzioni IF che è possibile utilizzare in un file batch di Windows per risparmiare tempo e fatica. Controlla questi esempi per saperne di più.
Se lavori molto con i file batch di Windows, l'istruzione IF offre un modo molto potente per aggiungere flessibilità ai tuoi script.
In questo articolo imparerai i cinque tipi principali di istruzioni IF che puoi utilizzare in un file batch di Windows, l'aspetto della sintassi corretta e un esempio realistico per ciascuno.
Se sei pronto per iniziare a creare script, iniziamo.
1. Confronta i valori
Una delle cose fondamentali che di solito devi fare in uno script batch è confrontare due valori e seguire una linea di condotta diversa a seconda del confronto.
Ad esempio, supponiamo che tu voglia scrivere uno script batch che controlli quotidianamente le dimensioni del disco rigido del tuo computer. Se è inferiore a 3 GB, desideri ricevere un rapporto e-mail con la dicitura "Spazio su disco rigido troppo basso".
Per creare uno script che confronti lo spazio libero corrente sul disco rigido con il tuo limite, dovrai creare il seguente script batch e salvarlo come file .bat.
@echo off
set DriveLimit=300000000
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
Echo FreeSpace="%FreeSpace%"
Echo Limit="%DriveLimit%"
If %FreeSpace% GTR %DriveLimit% (
Echo There is enough free space.
) else (
Echo Not enough free space.
)
Nello script, WMIC è il componente Strumentazione gestione Windows (WMI) di Windows fornito con un assortimento di comandi che puoi utilizzare per estrarre informazioni dal tuo PC.
Questo è il modo in cui il comando "wmic" in questo script chiama lo spazio logicaldisk e lo inserisce nella variabile FreeSpace.
Ora puoi semplicemente sostituire la riga Echo Spazio libero insufficiente con un comando per inviarti un avviso via email. Imposta lo script per l'esecuzione quotidiana.
2. Confronti tra stringhe
Un altro utile confronto IF che puoi eseguire in un lavoro batch è il confronto delle stringhe.
Nell'esempio seguente vedrai come verificare la versione di Windows utilizzando un processo batch. Quindi puoi confrontarlo con la versione di Windows prevista.
Alcuni usi di questo script potrebbero essere per gli audit IT quando è necessario eseguire rapidamente uno script e assicurarsi che il sistema operativo corrente sia il più recente o se sia necessario un aggiornamento.
Ecco come appare questo script:
@echo off
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" == "6.0" echo Windows Vista.
if "%version%" == "6.1" echo Windows 7
if "%version%" == "6.2" echo Windows 8
if "%version%" == "6.3" echo Windows 8.1
if "%version%" == "10.0" echo Windows 10.
Ecco come appare l'output di questo script:
La possibilità di confrontare stringhe in un batch apre un intero elenco di possibilità. Se esplori tutte le informazioni che puoi ottenere da un comando WMIC, vedrai quante statistiche sul tuo computer puoi monitorare.
Inoltre, puoi anche utilizzare lavori batch pianificati per ricevere avvisi su questi.
3. Controlla se esiste un file
Un'altra situazione utile in cui un'istruzione IF in un file batch consiste nel verificare l'esistenza di un file di dati.
Molte volte, il lavoro batch è solo uno strumento di monitoraggio che è possibile pianificare per verificare la presenza di nuovi file di dati in entrata in una directory specifica. Quindi, puoi copiare il file in un'altra posizione o avviare uno script Windows che elabora il file in un output Excel.
Utilizzare un file batch per verificare se un file esiste in una directory è semplice e veloce. Ecco come appare lo script:
@echo off
if exist c:\temp\datafile.txt (
%WINDIR%\SysWOW64\cmd.exe
cscript LoadToExcel.vbs
) else (
rem file doesn't exist
)
Il confronto IF EXISTS è utile per molte cose.
Ad esempio, se disponi di un sistema o di un'applicazione in esecuzione che crea nuovi log degli errori in una cartella specifica quando si verifica un problema, puoi eseguire un processo batch di tanto in tanto. In questo modo è possibile monitorare facilmente se vengono creati nuovi log degli errori in modo da poter inviare un avviso.
4. Controlla se un comando non è riuscito
Un aspetto dello scripting di file batch utilizzato da troppo pochi utenti IT o programmatori è il controllo degli errori.
Esistono molti lavori batch in giro che eseguono attività IT critiche come il backup di file importanti o l'esecuzione di operazioni di copia di file. Quando questi processi batch falliscono, i sistemi falliscono e le persone di solito se ne accorgono.
È molto più intelligente ricevere un avviso quando il tuo lavoro batch non ha eseguito un comando prima che le persone inizino a notarlo. In questo modo, puoi risolvere il problema in modo proattivo.
Puoi farlo utilizzando la variabile %errorlevel% che la maggior parte delle applicazioni e dei comandi restituiscono dopo l'esecuzione. Tutto quello che devi fare è seguire il tuo comando con il comando IF %ERRORLEVEL%.
@echo off
xcopy C:\somefolder E:\backupfolder
IF %ERRORLEVEL% NEQ 0 <blat command to send email>
Se l'applicazione o il comando restituisce uno zero, va tutto bene. In caso contrario, devi inviarti un'e-mail.
Tuttavia, non è necessario prendere il percorso della posta elettronica. Puoi sempre scrivere un registro degli errori da controllare ogni mattina oppure avviare una seconda applicazione o comando che tenti di eseguire la copia utilizzando un comando alternativo.
Inoltre, se preferisci utilizzare un'istruzione IF per verificare la presenza di codici di errore specifici, Windows offre un elenco piuttosto ampio di codici di errore di sistema.
5. Verificare la presenza di parametri mancanti
L'ultima istruzione IF utile non è per un comando specifico ma per verificare che lo script abbia ricevuto i parametri di input appropriati.
Ad esempio, supponiamo che tu abbia scritto uno script che esegue un comando xcopy da una cartella di input a una cartella di rete comune utilizzata da un team. L'utente deve solo seguire il nome dello script con i parametri che definiscono il percorso del file personale.
Non puoi eseguire correttamente lo script senza il percorso specificato, quindi potresti voler inserire un'istruzione IF all'inizio dello script per assicurarti che entrambi i parametri siano immessi.
@echo off
IF [%1]==[] (
GOTO sub_message
) ELSE (
xcopy %1 E:\backupfolder
)
GOTO eof
:sub_message
echo You forgot to specify your path.
:eof
Se non hai mai utilizzato parametri con script batch prima, il simbolo di percentuale seguito da un numero rappresenta la variabile del parametro. %1 è il primo parametro, %2 è il secondo e così via.
In generale, le istruzioni IF sono troppo comode e non è necessario scrivere troppi codici per utilizzarle effettivamente. Naturalmente, se vuoi fare un passo avanti, potresti prendere in considerazione l'idea di dare un'occhiata a VBA con la nostra guida sulla creazione della tua prima applicazione VBA.
I lavori batch possono essere potenti
Molte persone hanno iniziato a utilizzare lavori batch per attività semplici che devono essere eseguite in sequenza. Per fortuna, con le istruzioni IF, è possibile aggiungere molta più logica ai tuoi script.
Inoltre, puoi spesso utilizzare linguaggi di programmazione più avanzati e utilizzare PowerShell per eseguire molte delle stesse attività per le quali attualmente utilizzi i processi batch.