Creare un file batch con i comandi DOS come ECHO, START, CD, DIR, REM, MKDIR, RMDIR, SET, COPY, FOR e PAUSE
Un file batch è un file di testo che contiene una sequenza di comandi DOS e viene usato per scrivere degli script eseguibili con un semplice doppio click. In questo tipo di file, ogni riga viene eseguita in modo sequenziale, si tratta di uno dei motivi per cui il modo in cui si scrivono i file batch viene considerato un linguaggio di scripting e non di programmazione (non mette a disposizioni comandi e strutture dati avanzate).
Un esempio molto famoso di file batch è il file AUTOEXEC.BAT che viene eseguito all’avvio di quasi tutte le versioni di Windows e serve per caricare i driver e inizializzare le variabili di ambiente di vari dispositivi montati sul sistema (ad esempio tastiera, mouse, scheda audio, stampante e directory temporanee).
Per poter scrivere un file batch si può utilizzare qualsiasi editor di testo come il blocco note (avviabile nella lista dei programmi oppure con il comando notepad dal prompt dei comandi). I comandi utilizzabili per la creazione di un file batch vengono suddivisi in due grani categorie:
- Comandi interni: si trovano in Command.com e vengono caricati in memoria all’avvio del sistema;
- Comandi esterni: si tratta di file che risiedono sul disco ed hanno estensione exe, COM o BAT.
I principali comandi utilizzati in MS-DOS e utilizzati nei file batch sono:
- ECHO [Messaggio]: consente di visualizzare il Messaggio sullo schermo. Ad esempio:
echo Ecco il messaggio da mostrare - @ECHO OFF: consente di non visualizzare i comandi eseguiti ma solo la loro esecuzione;
- START: esegue un file con l’applicazione predefinita;
- CD: consente di entrare in una cartella. Ad esempio:
CD [desktop] - DIR: visualizza il contenuto nella cartella corrente e non richiede nessun parametro.
DIR - REM: viene utilizzato per inserire dei commenti all’interno del programma.
REM questo è il mio commento - MKDIR (MD): acronimo di Make Directory, consente di creare una nuova cartella.
MKDIR c:\NuovaCartella - RMDIR (RD): il comando Remove Directory viene utilizzando per cancellare una cartella.RMDIR[CartellaDaEliminare]
- SET: consente di inizializzare una variabile
set NOME=Luca
ECHO Il nome e': %NOME%- /A per assegnare ad una variabile un’espressione numerica, in sua assenza vengono trattati come stringhe.
- /P che consente l’input da parte dell’utente, ad esempio SET /P nome=Qual è il tuo nome?
In DOS il nome delle variabili non è case-sensitive, inoltre sono messe a disposizione delle variabili predefinite %1, %2, … %9 che contengono i parametri passati dalla linea di comando. Ad esempio scrivendo:
C:> 9 14 8Avremo che nella variabile %1 sarà contenuto il numero 9, nella variabile %2 il numero 14 e nella variabile %3 il numero 8. Il DOS mette a disposizione anche altre due variabili: %0 che contiene il nome del file batch e %* che contiene l’elenco completo dei parametri passati.
- COPY: consente di copiare uno o più file. Un comando simile è XCOPY ma a differenza di COPY consente di copiare file e cartelle con maggiori opzioni
- FOR: consente di iterare e fare una serie operazioni in successione:
FOR %myVar IN (miaLista) DO mioComando [parametri]
La variabile miaLista indica un insieme di qualsiasi elementi separati da uno spazio, da una virgola o da un punto e virgola, mentre la variabile myComando rappresenta il comando da eseguire ad ogni operazione. I parametri sono le opzioni del comando da eseguire, mentre myVar verrà sostituito ad ogni iterazione da un elemento estratto, in modo consecutivo, dalla lista. Ecco un esempio per stampare i numero da 1 a 3:
FOR %A IN (1 2 3) DO ECHO %a - PAUSE: blocca l’esecuzione del file finchè l’utente non preme un tasto:
PAUSE - FIND: consente all’utente di ricercare una stringa all’interno di un file restituendo le righe in cui è stata trovata.
FIND "Strinda da cercare" [Percorso e nome del file]
FIND "Marco" [file.ext]
FIND "marco" [Documenti\file.ext]- /V per mostrare tutte le righe che non contengono la stringa cercata;
- /C visualizza il numero totale di righe in cui è stata trovata la stringa;
- /N visualizza il numero delle righe in cui non è stata trovata la stringa;
- /I serve per ignorare il case-sensitive dei caratteri;
- SORT: permette di ordinare i dati ed è in grado di ordinare i dati memorizzati in un file.
SORT [/R] [/+n] <[c:\path\file.ext]> [destinazione]
SORT file.txt - RENAME (REN): modifica il nome di un file. Nel caso in cui esistesse già un file con lo stesso nome e la stessa estensione il file non verrà rinominato.
RENAME [VecchioFile.ext] [NuovoFile.ext] - TYPE: consente di visualizzare il contenuto di un file di testo (ASCII). Un esempio di utilizzo di questo comando è:
TYPE info.txt - DISKCOPY: consente di copiare il contenuto da un’unità di origine ad un’unità di destinazione.
DISKCOPY [unità di origine:][unità di destinazione:]
DISKCOPY f: f: - FORMAT: questo comando formatta il disco nell’unità specificata. Viene utilizzato per pulire il contenuto di un disco o per preparare un disco alla memorizzazione di dati e programmi.
FORMAT [unità][opzioni]- /B per riservare spazio per i file di sistema nascosti;
- /N:n per formattare con n settori per traccia;
- /T:t per specificare il numero di tracce per faccia del disco;
- /V per inserire il nuovo nome del disco alla fine della formattazione;
- /S per creare un disco di avvia formattandolo e copiandoci i file di sistema.
Il comando FORMAT restituisce come risultato dei numeri:
- 0 indica che la formattazione è riuscita correttamente;
- 3 comunica che la formattazione è stata interrotta dall’utente;
- 4 viene visualizzato se è accaduto un errore fatale;
- 5 indica che la formattazione del disco è stata interrotta.
Ecco un esempio di come formattare un floppy con il comando DOS:
FORMAT a: - CLS: utilizzato pulire la schermata da eventuali messaggi e comandi precedenti.
- CALL: serve ad avviare l’esecuzione di un altro file batch senza interrompere l’esecuzione del file attuale. Ad esempio:
CALL SecondaFile.bat - IF: rappresenta un controllo condizionale per eseguire determinare operazioni solo se la condizione è verificata, ad esempio:
IF EXIST file.txt GOTO :FINE
...
:FINE
:INIZIO
...
IF NOT EXIST file.txt GOTO :INIZIO - ECHO: consente di inserire una riga vuota.
ECHO
I comandi DOS FIND, SORT, RENAME, TYPE, DISKCOPY, FORMAT, CLS, CALL, IF, IF NOT EXIST, ECHO, CHOICE e GOTO
Altri comandi interessanti da utilizzare nei file batch sono:
Per maggiori informazioni è possibile utilizzare il comando help dal prompt dei comandi o per avere indicazioni su comando specifici come CHOICE e GOTO è possibile indicare il comando help seguito dal comando.