I comandi DOS
Cosa sono i comandi DOS?
I comandi DOS (Disk Operating System) sono delle istruzioni che possono essere eseguite per interagire con alcune funzioni della macchina. Nelle prime versioni di MS-DOS era necessario conoscere questo linguaggio per poter utilizzare tale sistema operativo. L'interfaccia fu semplificata nel 1984 quando la Microsoft introdusse Windows, che inizialmente semplicemente sostituiva l'interfaccia MS-DOS anche se i comandi DOS erano necessari per il funzionamento del sistema operativo, mentre in seguito rese questi comandi obsoleti, in quanto non più necessari per il corretto funzionamento del sistema. Tuttavia, sono tuttora eseguibili dalla riga di comando, eseguendo un file batch o anche eseguendo certe applicazioni.
Cos'è la riga di comando? E un file batch?
Il prompt dei comandi (chiamato a volte riga di comando o processore dei comandi) è situato nel percorso C:\WINDOWS\system32\cmd.exe
, che nelle vecchie versioni di Windows poteva essere aperto andando su Start > Tutti i programmi > Accessori > Prompt dei comandi, o ancora più velocemente facendo Start > Esegui e digitando CMD
. Nelle ultime versioni di Windows è possibile cercare il prompt dei comandi andando a cercarlo nell'apposita barra di ricerca in basso, oppure premendo Tasto di Windows + R e digitando CMD
. Per mezzo di questo ambiente possono essere eseguiti i comandi DOS.
Il file batch è un file (che può essere creato con Blocco Note), i cui comandi scritti al suo interno verranno eseguiti all'esecuzione del file stesso per mezzo del prompt dei comandi. L'estensione di questo tipo di file è .bat
.
Perché usare i comandi DOS oggi?
Sebbene oggi esistano strumenti molto potenti e l'uso di CMD e dei file batch può sembrare anacronistico, i comandi DOS rimangono sempre una soluzione semplice e comoda per eseguire operazioni fondamentali sul computer in maniera programmatica. Inoltre, questi comandi possono essere incorporati anche in script di linguaggi più avanzati come PowerShell. Dato che molti comandi DOS sono applicazioni stand-alone (comandi esterni), questi possono essere usati anche in ambienti diversi dal prompt dei comandi o dal file batch (ad esempio in applicazioni, in script Python, e così via). Si tratta quindi di un modo per prendere dimestichezza con le funzioni del sistema operativo Windows.
I comandi DOS
I comandi DOS sono per la maggior parte applicazioni (in formato .exe
), e questi possono dunque essere eseguiti da applicazioni esterne a cmd.exe
. Alcuni invece (tra cui IF
, DEL
o ERASE
, GOTO
ecc…) sono interpretati direttamente dal prompt. Tali comandi sono detti comandi interni, e generalmente non possono essere eseguiti in un ambiente che non sia il prompt dei comandi.
Caratteri speciali
I caratteri jolly sono caratteri speciali che sostituiscono uno o un gruppo di caratteri, solitamente alfanumerici (a-z, A-Z, 0-9).
-
*
- Si usa generalmente per nomi dei file o estensioni che non si conoscono, o, più frequentemente, per indicare un gruppo di file o cartelle con lo stesso nome, estensione o per indicare tutti i file di una cartella.Esempio: Elimina tutti i file con estensione
.txt
nella cartellaC:\dump
:del "C:\dump\*.txt"
-
?
- Si usa per sostituire un singolo carattere quando si indica un nome o un percorso di file o cartelle.Esempio: Elimina tutti i file chiamati
brazorf
con tre caratteri come estensione che si trovano nella cartellaC:\dump
:del "C:\dump\brazorf.???"
Altri caratteri speciali:
-
@
- Nasconde un comando (ovvero non lo visualizza nel prompt).Esempio: Nasconde il comando
SHUTDOWN /S /T 100 /C "Ciao!"
:@shutdown /s /t 100 /c "Ciao!"
Questo carattere speciale si può omettere se
ECHO
è disattivato. Vedi ECHO. -
&
- Unisce due comandi nella stessa riga.Esempio: Unisce il comando
"C:\d.txt"
ed il comandoECHO Il file d.txt è stato aperto correttamente
:"C:\d.txt" & echo Il file d.txt è stato aperto correttamente
Avvertenze sulla sintassi
Le opzioni tra parentesi quadre [ ]
possono essere omesse. Se ci sono due o più opzioni all’interno di una stessa parentesi quadra significa che se ne viene omessa una, deve essere omessa anche l’altra. Se invece si trova la barra verticale |
all’interno di una parentesi quadra, significa che si possono scegliere fra due opzioni (o più), ma non si può selezionarle entrambe. I comandi fra parentesi graffe { }
che contengono il simbolo |
, vogliono dire che deve essere scelto obbligatoriamente almeno un'opzione e non più di una fra quelle specificate. Le parole in tutto-maiuscolo significano che non possono essere sostituite (ma che possono essere omesse se tra parentesi quadre [ ]
), mentre quelle in minuscolo significano che devono essere sostituite da un valore numerico o stringa. Gli apici doppi devono essere " "
e non “ ”
. Vale lo stesso avvertimento per gli apici singoli: ' '
, non ‘ ’
. La barra /
può essere sostituita spesso dal trattino -
. Infine, i puntini di sospensione ...
indicano che è consentita la ripetizione del parametro precedente (specificando, chiaramente, informazioni aggiuntive). Se non viene rispettata la sintassi verranno a riscontrarsi degli errori, e di conseguenza l'esecuzione del programma verrà interrotta.
Lista dei comandi DOS
- ASSOC - Visualizza o modifica le applicazioni associate alle estensioni dei file.
- AT - Pianifica l'esecuzione di comandi o programmi su un computer.
- ATTRIB - Visualizza o cambia gli attributi di un file.
- BCDEDIT - Modifica l'archivio dei dati di configurazione di avvio e controlla la modalità di avvio del sistema.
- BREAK - Attiva o disattiva il controllo esteso di CTRL + C (^C).
- CACLS - Visualizza o modifica gli elenchi di controllo di accesso (ACL) dei file.
- CALL - Richiama un programma batch da un altro.
- CD - Visualizza il nome o cambia la cartella corrente.
- CHCP - Visualizza o imposta il numero di tabella codici attiva.
- CHDIR - Visualizza il nome o cambia la cartella corrente.
- CHKDSK - Controlla un disco e visualizza il relativo rapporto sullo stato.
- CHKNTFS - Visualizza o modifica la verifica di un disco durante l'avvio.
- CLS - Cancella lo schermo.
- CMD - Avvia una nuova istanza dell'interprete dei comandi di Windows.
- COLOR - Imposta i colori predefiniti in primo piano e dello sfondo della console.
- COMP - Confronta il contenuto di due file o di un gruppo di file.
- COMPACT - Visualizza o modifica la compressione di file su partizioni NTFS.
- CONVERT - Converte volumi FAT in NTFS. Non è possibile convertire l'unità in uso.
- COPY - Copia uno o più file in un'altra posizione.
- DATE - Visualizza o imposta la data.
- DEL - Elimina uno o più file.
- DIR - Visualizza un elenco di file e sottocartelle in una cartella.
- DISKCOMP - Confronta i contenuti di due dischi floppy.
- DISKCOPY - Copia il contenuto di un disco floppy su un altro.
- DISKPART - Visualizza o configura le proprietà di partizione del disco.
- DOSKEY - Modifica righe di comando, richiama comandi di Windows, crea macro.
- DRIVERQUERY - Visualizza stato e proprietà dei driver dei dispositivi di un sistema.
- ECHO - Visualizza messaggi o attiva e disattiva l'eco dei comandi.
- ENDLOCAL - Termina la localizzazione di modifiche di ambiente in un file batch.
- ERASE - Elimina uno o più file.
- EXIT - Termina il programma CMD.EXE (il prompt dei comandi).
- FC - Confronta due file o gruppi di file e visualizza le differenze tra di essi.
- FIND - Ricerca una stringa di testo in uno o più file.
- FINDSTR - Ricerca stringhe nei file.
- FOR - Esegue un comando specificato per ogni file in un gruppo di file.
- FORMAT - Formatta un disco per l'utilizzo con Windows.
- FSUTIL - Visualizza o configura le proprietà del file system.
- FTYPE - Visualizza o modifica i tipi di file utilizzati nelle associazioni delle estensioni di file.
- GOTO - Dirige l'interprete dei comandi di Windows a una riga con etichetta in un programma batch.
- GPRESULT - Visualizza le informazioni relative al Gruppo di Criteri Risultante per l'utente o il computer di un sistema specificato.
- GRAFTABL - Abilita Windows alla visualizzazione di un set di caratteri estesi in modalità grafica.
- HELP - Fornisce informazioni di aiuto per i comandi di Windows.
- ICACLS - Visualizza o modifica gli elenchi di controllo di accesso (ACL) dei file.
- IF - Esegue un'elaborazione condizionale in un programma batch.
- LABEL - Crea, cambia o elimina l'etichetta di volume di un disco.
- MD - Crea una cartella.
- MKDIR - Crea una cartella.
- MODE - Configura una periferica di sistema.
- Comando MORE - Visualizza l'output una schermata alla volta.
- MOVE - Sposta uno o più file da una cartella a un'altra cartella.
- OPENFILES - Elenca o disconnette file e cartelle aperti in un sistema specificato.
- PATH - Visualizza o imposta un percorso di ricerca per file eseguibili.
- PAUSE - Sospende l'elaborazione di un file batch e visualizza un messaggio.
- POPD - Ripristina il valore precedente della cartella corrente salvato con PUSHD.
- PRINT - Stampa un file di testo.
- PROMPT - Cambia il prompt dei comandi di Windows.
- PUSHD - Salva la cartella corrente e poi la cambia.
- RD - Elimina una cartella.
- RECOVER - Recupera le informazioni leggibili da un disco danneggiato o difettoso.
- REM - Registra commenti (note) in file batch o CONFIG.SYS.
- REN - Rinomina i file.
- RENAME - Rinomina i file.
- REPLACE - Sostituisce i file.
- RMDIR - Elimina una cartella.
- ROBOCOPY - Strumento avanzato per la copia e lo spostamento di file e strutture di cartelle.
- SC - Gestisce e visualizza i servizi di Windows.
- SCHTASKS - Pianifica l'esecuzione di comandi o programmi su un computer.
- SET - Visualizza, imposta o elimina variabili di ambiente di Windows.
- SETLOCAL - Inizia la localizzazione di modifiche di ambiente in un file batch.
- SHIFT - Modifica la posizione di parametri sostituibili in file batch.
- SHUTDOWN - Arresta, riavvia, iberna o disconnette il sistema specificato.
- SORT - Ordina l'input.
- Comando START - Avvia una finestra separata per eseguire un programma o un comando specificato.
- SUBST - Associa un percorso ad una lettera di unità.
- SYSTEMINFO - Visualizza le informazioni di configurazione di un sistema locale o remoto, inclusi i livelli dei service pack.
- TASKKILL - Termina un'attività in esecuzione in base all'ID del processo o al suo nome.
- TASKLIST - Visualizza le attività in esecuzione in base all'ID dei processi o al loro nome su un sistema specificato.
- TIME - Visualizza o imposta l'ora di sistema.
- TITLE - Imposta il titolo della finestra per una sessione CMD.EXE.
- TREE - Visualizza graficamente la struttura delle cartelle di un'unità o percorso.
- TYPE - Visualizza il contenuto di un file di testo.
- VER - Visualizza la versione di Windows.
- VERIFY - Comunica a Windows di verificare o meno che i file siano stati scritti correttamente su un disco.
- VOL - Visualizza un'etichetta di volume e il numero di serie del disco.
- XCOPY - Copia file e strutture di cartelle.
- WMIC - NEW
Approfondimenti
Questa sezione raccoglie tutti gli approfondimenti che ho inserito nelle svariate pagine sui comandi DOS, in modo da facilitare la consultazione e il reperimento di informazioni non necessariamente legate a uno specifico comando. Ogni paragrafo mostrerà uno o più collegamenti alle pagine correlate.
Espandere una variabile d'ambiente
(vedi IF, SET, PATH, DATE, TIME, CD o CHDIR e ECHO)
Per farlo, sarà necessario semplicemente racchiudere il nome della variabile tra simboli di percentuale %
, come nell'esempio:
echo %path%
Lo stesso si applica a tutte le variabili definite, comprese quelle predefinite dal prompt dei comandi, come:
%ERRORLEVEL%
- Espande il codice d'uscita dell'ultima istruzione.%CMDCMDLINE%
- Espande il percorso del prompt dei comandi.%DATE%
- Data attuale.%TIME%
- Ora attuale.%CD%
- Cartella corrente.%RANDOM%
- Numero casuale tra 0 e 32767.
È possibile, inoltre, usare dei modificatori per l'espansione, specificando i due punti :
dopo il nome della variabile d'ambiente, ad esempio:
Questa riga espande la variabile d'ambiente%VAR:parola1=parola2%
VAR
sostituendo le paroleparola1
con le paroleparola2
.parola2
può non essere specificato per rimuovere le paroleparola1
.
Espande i primi 4 caratteri partendo dal terzo (saltando i primi 2 caratteri) della variabile d'ambiente%VAR:~2,4%
VAR
. Se 4 non viene specificato estrae i primi 2 caratteri. Se nel primo numero viene specificato 0, significa che estrae tutti i caratteri tranne i primi quattro.
Espande gli ultimi 4 caratteri della variabile d'ambiente%VAR:~-4%
VAR
.
Espande tutti i caratteri tranne gli ultimi 4 della variabile d'ambiente%VAR:~0,-4%
VAR
.
Mostrare il nome del computer corrente
echo %computername%
Mostrare il nome utente corrente
echo %username%
Gestire i parametri sostituibili in un file batch
(vedi SHIFT)
Quando viene chiamato un file batch da linea di comando, è possibile specificare degli argomenti aggiuntivi dopo il nome del file. È quindi possibile accedere a questi argomenti tramite la sintassi %0
, %1
, %2
ecc…. Ad esempio, chiamando il seguente comando:
programmino.bat ciccio pippo pluto
All'interno dello script richiamato, al parametro %0
sarà assegnato programmino.bat
, a %1
sarà assegnato ciccio
, a %2
sarà assegnato pippo
e a %3
sarà assegnato pluto
. Ai parametri successivi (%4
, %5
, ecc…) sarà assegnata una stringa vuota.
Visualizzare le estensioni di default
(vedi il comando START, PATH e ECHO)
In generale, è possibile, oltre ai file eseguibili e ai comandi interni ed esterni, specificare anche file non eseguibili associati a un'applicazione tramite i comandi ASSOC e FTYPE. Inoltre, è possibile omettere le estensioni di tutti questi file se presenti nella variabile d'ambiente PATHEXT
. Per mostrare tutte le estensioni supportate, sarà sufficiente scrivere:
set pathext
Oppure:
echo %pathext%
L'output di questo comando dipenderà, in generale, dalla versione di Windows corrente. Un possibile output sarà:
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
Il funzionamento di questa variabile d'ambiente è simile a quella della variabile d'ambiente PATH
. Come per quest'ultima variabile, infatti, è possibile aggiungere estensioni usando il comando SET.
Richiamare i comandi da linea di comando
(vedi DOSKEY)
I pulsanti frecce su e giù permettono di selezionare uno tra gli ultimi comandi digitati sul prompt. Digitando F7 viene visualizzata una schermata con la cronologia dei comandi con i relativi indici, che si possono selezionare usando le frecce; digitando F9 compare invece una schermata nella quale si chiede di inserire l'indice associato al comando da richiamare. Digitando F8 si percorre la cronologia dei comandi dall'inizio del buffer invece che dalla fine (come succede invece se si usano le frecce). Infine, il tasto ESC può essere usato per chiudere le schermate delle cronologie dei comandi o per cancellare il contenuto della riga di comando.
La combinazione di tasti Alt + F7 si può usare per cancellare la cronologia dei comandi (simile a DOSKEY /REINSTALL
, ma senza reimpostare la modalità di sovrascrittura), mentre Alt + F10 cancellerà le macro create (quest'ultima funzione non è supportata nelle ultime versioni di Windows).
Commenti