Guida al DOS e file batch

IL DOS

Sotto DOS i nome dei file e le cartelle non possono superare gli 8 caratteri.
Ogni file avrà quindi un nome e una sua estensione di 3 caratteri.
xxxxxxxx.xxx (gioco.exe)

Caratteri JOLLY:
*  sostituisce una stringa di caratteri
? sostituisce un carattere

Ecco qua alcuni tra i principali comandi DOS:

  • CD
    Entra in una cartella
    CD [nomecartella]

    ESEMPIO:
    Entrare nella cartella giochi
    CD giochi

  • DIR
    Mostra il contenuto della cartella
    DIR non vuole alcun parametro

    ESEMPIO:
    Visualizzare i file e le cartelle presenti in c:
    DIR

  • FIND
    Ricerca una stringa di caratteri in un file
    FIND [/V][/C][/N] “stringa” [c:\percorso\file.est]

    FIND viene usato per cercare una stringa di caratteri in uno o più file.
    La stringa di caratteri deve essere racchiusa tra virgolette. Se la stringa di caratteri contiene delle virgolette sarà necessario indicarle due volte.
    ATTENZIONE: la stringa “Ciao” è diversa dalla stringa “ciao” quindi fare attenzione alle maiuscole e alle minuscole.
    OPZIONI:
    /V = indica le righe in cui è stata trovata la stringa.
    /C = indica il numero di righe in cui è stata trovata la stringa
    /N = indica le righe in cui non è stata trovata la stringa

    Senza opzioni il comando FIND indica le righe in cui è stata trovata la stringa

    ESEMPIO:
    Ricercare la stringa:
    FIND “Gigi disse:”"No!”"

  • SORT
    Ordina i dati
    SORT [/R][/+n]<[c:\percorso\file.est]>[destinzaione]
    SORT viene usato per ordinare i dati secondo una sequenza alfanumerica.Può:
    -ordinare i dati memorizzati in un file esistente
    -ordinare dati standard provenienti da un altro programma
    -ordinare secondo una sequenza normale o inversa
    -ordinare le righe in ordine alfabetico sulla bas del carattere di una certa colonna, non necessariamente la prima, di ogni riga

    Il tipo di ordinamento dipende dalle opzioni usate (/R e /+n). Se non si usano opzioni i dati vengono ordinati in ordine alfabetico.
    Il risultato dell’operazione può essere inviato ad un file o al dispositivo di output indicato. Se non viene indicata una destinazione i dati ordinati vengono inviati allo schermo.

    OPZIONI:
    /R = inverte l’ordine (ad esempio l’ordinamento viene fatto da 9 ad A)
    /+n = ordina sulla base della colonna n

    ESEMPIO:
    Ordinare le righe in un file testo PRIMA.TXT in ordine alfabetico e memorizzare i risultati nel file DOPO.TXT:
    SORT dopo.txt

  • ATTRIB
    Definisce gli attributi di un file
    ATTRIB [+R|-R][+A|-A] [c:\percorso\file.est]
    ATTRIB è usato per definire gli attributi di Sola-letura e di Archivio di un file.

    OPZIONI:
    +R = Attiva sola lettura (quindi disattiva lettura-scrittura)
    -R = Disattiva sola lettura (quindi attiva lettura-scrittura)
    +A = Attiva archivio
    -A = Disattiva archivio
    +S = Attiva file di sistema
    -S = Disattiva filoe di sistema
    +H = Attiva file invisibile
    -H = Disattiva fil einvisibile

    Se non vengono usate opzioni il comando ATTRIB mostrerà su scehrmo gli attributi del file senza modificarli.

    ESEMPIO:
    Attivare lettura-scrittura nel file mio.txt
    ATTRIB -R mio.txt

  • COPY
    Copia i file
    COPY [C:\percorso\origine.est][/A][/B] [c:\percorso\destinazione.est][/A][/B][/V]
    COPY vinene usato per copiare singoli file di origine e per copiare con una sola operazione più file di origine

    OPZIONI ORIGINE:
    /A = Il file viene considerato come un file di testo ASCII. Il contenuto viene copiato fino fino all’ EOF (End Of File)
    /B = Il file viene copiato tutto indipendentemente dall EOF

    OPZIONI DESTINAZIONE:
    /A = Il file viene cosiderato un file di testo ASCII. Al termine del file viene aggiunto il carattere di EOF
    /B = Al termine del file non viene aggiunto il carattere di EOF
    /V = Il file di destinazione viene confrontato con quello di orignine per verificare l’accuratezza della copia

    Si può anche indirizzare la copia verso un dispositivo di output:
    COPY [C:\percorso\origine.est] [output]
    Al posto di output inserire una tra le seguenti opzioni:
    CON = Schermo
    PRN o LPT1 = Stampante collegata alla porta parallela della stampante
    AUX o COM1 = Interfaccia seriale
    NUL = Dispositivo di output fittizio usato ad esempio durante la prova di un programma

    Se si vuole copiare in un file ogni cosa che viene scritta con la tastiera basta fare così:
    COPY CON CIAO.TXT

    Nel file CIAO.CIO (inventato!) metto ogni cosa che scrivo dal comando in avanti. Per
    uscire da questa opzione basta fare ^C (Ctrl+C).

    ESEMPI:
    Copiare tutti i file di estensione .txt nella cartella documenti
    COPY *.txt c:\documenti

    Unire il file inizio.txt e fine.txt nel file completo.txt
    COPY inizio.txt + fine.txt completo.txt

  • DEL ERASE
    Cancella un file
    DEL [c:\percorso\file.est]
    ERASE [c:\percorso\file.est]

    DEL o ERASE vengono utilizzati per eliminare uno o più file.
    Un file cancellato non può puù essere recuperato.

    ESEMPIO:
    Cancellare il file prova.txt
    DEL prova.txt 
    ERASE prova.txt

  • MKDIR o MD
    Crea una nuova cartella
    MKDIR [nomedirettorio]
    MD [nomedirettorio]
    MKDIR e MD creano una nuova cartella con il nome voluto (nomedirettorio)

    ESEMPIO:
    Creare la cartella MIA
    MKDIR mia
    MD mia

  • RENAME o REN
    Modifica il nome di un file
    RENAME [vecchio_nome_file.est] [nuovo_nome_file.est]
    REN [vecchio_nome_file.est] [nuovo_nome_file.est]
    RENAME e REN vengono usati usato per cambiare il nome ad uno o più file.

    Se esiste già un file con il nuovo nome che si vuole attribuire l’operazione non viene eseguita

    ESEMPIO:
    Rinominare il file vecchio.txt in nuovo.txt
    RENAME vecchio.txt nuovo.txt
    REN vecchio.txt nuovo.txt

  • RMDIR o RD
    Elimina una cartella
    RMDIR [nuovacartella]
    RD [nuovacartella]

    I comandi RMDIR e RD vengono utilizzati per cancellare una cartella.
    RMDIR e RD eliminano le cartelle solamente se queste non contengono alcun file.

    ESEMPIO:
    Eliminare la cartella GIGI
    RMDIR gigi
    RD gigi

  • TYPE
    Visualizza un file di testo
    TYPE [c:\percorso\file.est]
    TYPE visualizza il contenuto del file indicato. Gli unici file di testo che possono essere visualizzati sono file di testo ASCII.

    ESEMPIO:
    Visualizzare il file autoexec.bat
    TYPE autoexec.bat

  • XCOPY
    XCOPY copia file e direttrici
    XCOPY[c:\origine\] [c:\destinazione\] [opzioni]

    XCOPY serve per:
    -copiare singoli file origine
    -copiare la struttura delle cartelle

    L’origne e la destinazione di tutte le operazioni di copia sono i direttori. E’ possibile copiare anche i direttori sottostanti a un direttorio di origine, direttori vuoti e direttori che contengono file o altri direttori.

    OPZIONI:
    /A = copia solo file con attributi di Archivio senza che esso venga ripristinato dopo la copia
    /D:gg-mm-aa = copia solo i file che sono stati modificati alla o successivamente alla data indicata
    /E = Copia i sottodirettori (è necessario selezionare anche l’opzione /S)
    /M = Copia solo file con attributi di Archivio mantenendoli come tali
    /P = Richiesta di conferma di tutte le copie
    /S = Copia i file della direttrice indicata e di tutti i sottodirettori mantenendo la struttura dei sottodirettori
    /V = Verifica che la copia sia uguale all’originale
    /W = Attende che venga premuto un tasto prima di iniziare l’operazoine di copia

    CODICE DI ERRORE:
    0 = Nessun errore
    1 = Non si sono trovati file da copiare
    2 = Copia interrotta dall’utente (premendo Ctrl-C)
    4 = Si è indicata un direttorio non valido, è stato commesso un errore nello scrivere il comando, oppure il file o percorso indicati non sono stati trovati
    5 = Copia interrotta dall’utente in seguito ad un errore su disco

    ESEMPIO:
    Copiare tutti i file e sotodirettori presenti nel direttorio c:\mio\
    XCOPY mio /E /S

  • DISKCOPY
    Copia il contenuto di un’unità di rigine su un’unità di destinazione
    DISKCOPY [unità di origine:][unità di destinazione:]

    DISKCOPY viene utilizzato per copiare traccia per traccia un disco su un altro disco.

    L’unità di destinazione non deve necessariamente essere diversa da quella di origine.
    Se le unità coincidono DISKCOPY legge quella di origine e chiede all’utente di togliere il disco e sostituirlo con quello di destinazione.

    ESEMPIO:
    Fare una copia di un floppy.
    DISKCOPY a: a:

  • FORMAT
    formatta il disco nell’unità specificata
    FORMAT [unità][opzioni]
    Il comando FORMAT è usato per:
    -preparare un disco vergine alla memorizzazione di dati e programmi
    -recuperare un vecchio disco i cui dati non sono più utilizzabili

    OPZIONI:
    /1 = Formatta un solo lato del disco
    /8 = Formatta con otto settori per traccia
    /B = Riserva spazio per i file di sistema nascosti
    /N:n = Formatta con n settori per traccia
    /T:t = Formatta con t tracce
    /V = Richiede il nome dell’etichetta per il disco dopo che il formato è stato completato.
    /S = Formatta e prepara un dischetto affinchè possa essere usato come disco di avvio copiandovi i file di sistema

    CODICI IN USCITA:
    0 = Formattazione riuscita
    3 = Formattazione interrotta dall’utente
    4 = Errore fatale
    5= Formattazione del disco interotta

    ESEMPIO:
    Formattare un floppy
    FORMAT a:


IL FILE BATCH

Il file BATCH è un file con estensione .bat. Al suo interno sono memorizzati una serie di comandi DOS che al suo avvio vengono avviati secondo l’ordine.

Andiamo ad analizzare un programma BATCH:
PRIMA RIGA di ogni programma:

@echo off

Questo comando permette la non visualizzazione della scrittura del comando ma solo la sua esecuzione. Cioè?
Se io faccio un programma che cambia directory e mi porta alla base, alla root di ogni sistema DOS (cioè il c:), queste sono le due esecuzioni:

SENZA @echo off:

c:\ciao>
c:\ciao>cd ..
c:\>

CON @echo off:

c:\>ciao>
c:\>

Come vedete non mi fa vedere la scrittura del comando ma solo la sua esecuzione!

Ora impariamo a scrivere.
Per scrivere bisogna usare il comando ECHO
Quindi ricapitolando:
——-INIZIO————

@echo off
echo.
echo.
echo RICAPITOLANDO….
echo.
echo.
——-FINE———-

“Echo.” serve per una lasciare una riga vuota.
echo RICAPITOLANDO… visualizzarà sullo schermo la parola RICAPITOLANDO…

Per pulire lo schemo si usa il comando CLS.

Quindi:
——–INIZIO———-
@echo off
cls
echo.
echo.
echo RICAPITOLANDO…
echo.
echo.
——-FINE————–

Ora supponiamo di porre una scelta all’utente del nostro programma.
Questa si fa con il comando CHOICE.
Questo ha diverse opzioni:

/C:[elenco] = Imposta le lettere che l’utente può scegliere.
/N  = Se messo non visualizza le lettere che l’utente può scegliere.
/T:[secondi,lettera] = Imposta il tempo della scelta in secondi da 0 a 99 per poi (a tempo scaduto e se l’utente non ha                                    scelto) far partire la scelta corrispondente alla lettera selezionata.

E’ ovvio che non può essere una parola la scelta ma solo singoli caratteri.
ESEMPIO:

CHOICE /C:SN Si o No?

Con questo comando all’utente comparirà la domanda: Si o No?[S,N]? e questo potrà inserire come risposta solo o S o N. Se metterà un altra lettera si avrà un BIP del computer.

Se invece pongo il comando:

CHOICE /C:SNC /N Si, No o Continua?

L’utente vedrà solo Sì, No o Continua? senza le possibilità che prima c’erano tra le
parentesi quadrate.

Abbastanza chiaro?

Come faccio ora a regolare le possibilità?
Così:

CHOICE /C:ABC /N Scegli tra la lettera A, B, C!
IF ERRORLEVEL 3 GOTO ciao
IF ERRORLEVEL 2 GOTO banana
IF ERRORLEVEL 1 GOTO strada

:strada
:banana
:ciao

Attraverso il comando IF ERRORLEVEL … regolo le diverse scelte che l’utente può
fare. Se l’utente preme la 3° lettera il programma andrà (GOTO) alla etichetta ciao.
Al contrario se farà la 2° scelta andrà a banana e con la 1° a strada.

Le scelte devono essere in ordine decrescente. cioè
non
if errorlevel 1 goto ..
if errorlevel 2 goto..
..

MA:
if errorlevel 2 goto…
if errorlevel 1 goto…

Dalla scelta maggiore alla minore.

Abbiamo quindi visto che attraverso il comando GOTO mi sposto ad una etichetta. Ma
cos’è questa etichetta?
L’etichetta è questa:

:ciao
..comandi vari…

Cioè è un punto che io posso raggiungere usando GOTO ciao.

ESEMPIO:

——–INZIO——–
@echo off
cls
echo.
echo.
echo SCEGLI:
echo.
echo A
echo B
echo C
echo.
echo.
choice /C:ABC /N CHE LETTERA SCEGLI?
IF ERRORLEVEL 3 GOTO CIAO
IF ERRORLEVEL 2 GOTO ASF
IF ERRORLEVEL 1 GOTO CCC
:CCC
ECHO.
ECHO HAI SCELTO LA LETTERA A
GOTO END
:ASF
ECHO.
ECHO HAI SCELTO LA LETTERA B
GOTO END
:CIAO
ECHO.
ECHO HAI SCELTO LA LETTERA C
:END
——-FINE———–

In questo programma ho detto di scegliere una tra le tre lettere e poi gli dico quale a scelto.

Semplicissimo.

CALL avvia l’esecuzione di un altro file patch senza interrompere l’esecuzione del
primo:

CALL ciao.bat

Se non mettessi CALL ciao.bat partirebbe comunque ma potrebbe interrompere il primo
programma.
Ovviamente CALL funziona con i file.bat!

PAUSE blocca l’esecuzione del programma finchè l’utente non preme un tasto.

IF si usa oltre per le scelte con CHIOCE e gli altri, anche in questo modo:

IF EXIST C:\nome_file GOTO ciao
Se esiste questo file vai all’etichetta ciao

ma si usa anche così:

IF NOT EXIST C:…..
se non esiste…

REM serve per i commenti: 
REM questo è un commento all’interno del mio programma