Compago

...free knowledge

 
  • Increase font size
  • Default font size
  • Decrease font size
Home Manuali Windows Il comando dos COMMAND e CMD

Il comando dos COMMAND e CMD

E-mail Stampa PDF

Il command.com è l'interprete dei comandi per MS-DOS ed è presente nei sistemi operativi Microsoft. Senza questo comando un computer che usa un sistema operativo Microsoft non sarebbe in grado d'essere avviato.

Con Windows NT, 2000, XP, o sistemi operativi futuri abbiamo due versioni dell'interprete dei comandi comand.com e cmd.exe. Cmd offre delle variabili d'ambiente in più rispetto al command.com; comunque quest'ultimo è raccomandato se  si sta eseguendo una applicazione MS-DOS che utilizza il command.com. Per utilizzare command.com, cliccare Start / Run e digitare : command. Se invece si vuole avviare cmd digitare : cmd.

Sintassi per "command"

COMMAND [[drive:] path] [device] [/E:nnnnn] [/L:nnnn] [/U:nnn] [/P] [/MSG] [/LOW] [/Y [/C|K] command]

[drive:]path Specifica la cartella che contiene l'eseguibile COMMAND.COM.
device Specifica il dispositivo usato per l'input e l'output di command.
/E:nnnnn Imposta la dimensione iniziale dell'ambiente a nnnnn bytes. (nnnnn dovrebbe essere tra 256 e 32,768).
/L:nnnn Specifica internal buffers length (requires /P as well). (nnnn should be between 128 and 1,024).
/U:nnn Specifica la lunghezza dell'input buffer (richiede anche /P). (nnn compreso tra 128 e 255).
/P Rende il nuovo Command Interpreter permanente (non si può uscire).
/MSG Memorizza tutti i messaggi d'errore in memoria (richiede anche /P).
/LOW Forza COMMAND a conservare i dati nella low memory.
/Y Passa attraverso il programma batch specificato da /C o /K. (Disponibile dal MS-DOS 6.x in poi).
/C command Esegue il comando e chiude la finestra DOS.
/K command Esegue il comando e lascia aperta la finestra DOS.
/Z Mostra l'errorlevel di ogni comandoeseguito (Disponibile solo dal MS-DOS 7.x in poi).

 

Sintassi per "CMD"

Inizia una nuova istanza dell'interprete comandi di Windows 2000 / Windows XP.

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [[/S] [/C | /K] string]

/C Esegue il comando specificato e termina.
/K Esegue il comando specificato e rimane aperta la finestra DOS.
/S Modifica il modo in cui viene trattata la stringa dopo /C o /K (vedi sotto)
/Q Spegni l' "echo"
/D Disabilita l'esecuzione dei comandi di AutoRun dai registri (vedi sotto)
/A Impone che un output dei comandi interni verso un pipe o un file debba essere ANSI.
/U Impone che un output dei comandi interni verso un pipe o un file debba essere Unicode
/T:fg Imposta il colori di fronte e di sfondo (foreground/background) (vedi COLOR /? per maggiori informazioni)
/E:ON Abilita l'estensione dei comandi (vedi sotto)
/E:OFF Disabilita l'estensione dei comandi (vedi sotto)
/F:ON Abilita il completamento per i nomi dei file e delle cartelle (vedi sotto)
/F:OFF Disabilita il completamento per i nomi dei file e delle cartelle (vedi sotto)
/V:ON Abilita le variabili d'ambiente ritardate usando c come delimitatore. Per esempio, /V:ON permetterebbe a !var! di espandere la variabile var al tempo di esecuzione. La sintassi var espande le variabili al tempo di input, che è diverso quando è dentro un loop FOR.
/V:OFF Disabilita l'espansione di ambiente ritardato.

Notare che i comandi multipli sono separati da un separatore comandi '&&' , i quali devono essere racchiusi tra virgolette. anche, per ragioni di compatibilità, /X è la stessa cosa che /E:ON, /Y è equivalente a /E:OFF e /R è uguale a /C.

Se /C or /K sono specificati, allora la parte rimanente della riga di comando dopo l'opzione è processata come una riga di comando, dove la seguente logica  è usata per interpretare i caratetre ("):

  1. Se si riscontrano tutte le seguenti condizioni, allora le virgolette saranno preservate:
    • nessuna opzione /S
    • esattamente 2 caratteri (")
    • nessun carattere speciale tra le 2 virgolette, dove per speciali si intende uno di questi: &<>()@^|
    • ci sono uno o più spazi bianchi tra le 2 virgolette
    • la stringa tra virgolette è il noem di un file eseguibile.
  2. Altrimenti, controlla se  il primo carattere è una virgoletta e se è così, leva il primo carattere e rimuove l'ultima virgoletta dalla linea di coamndo, mantenendo tutto il testo dopo l'ultima virgoletta.

Se /D NON era specificato nella linea di comando, allora quando CMD.EXE parte, cerca la variabile di registro REG_SZ/REG_EXPAND_SZ , e se altre opzioni sono presenti, saranno eseguite per prime:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

e/o

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

Le Command Extensions sono abilitate di default. E' possibile disabilitarle usando l'opzione /E:OFF. E' possibile abilitare o disabilitare sempre le estensioni agendo sulle chiavi di registro usando REGEDT32.EXE:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions

e/o

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions

ognuna a  0x1 o 0x0. Le impostazioni per utente specifico sono prese in considerazione in maniera prioritaria rispetto alle impostazioni generali. Allo stesso la scelta effettuata da riga di comando ha la precedenza sulle impostazioni di registro.

 

Le estensioni del comando coinvolge modifiche e/o aggiunte ai seguenti comandi:

DEL or ERASE, COLOR, CD or CHDIR, MD or MKDIR, PROMPT, PUSHD, POPD, SET, SETLOCAL, ENDLOCAL, IF, FOR, CALL, SHIFT, GOTO, START (also includes changes to external command invocation), ASSOC, FTYPE

Le espansioni delle variabili ritardate NON è abilitato di default. E' possibile abilitarlo o disabilitarlo usando CMD con l'opzione /V:ON o /V:OFF. L'abilitazione o la disabilitazione può anche essere fatta modificando le seguenti chiavi di registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

e/o

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

impostandone il valore a 0x1 o 0x0.

Il completamento del nome di un File o una Directory NON è abilitato di default. Per fare questo possiamo usare il comando CMD con l'opzione /F:ON o /F:OFF. Come i precedenti comandi è possibile farlo anche tramite le chiavi di registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar

e/o

HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar

il valore esadecimale rappresenta un control character da usare per una funzione particolare (esempio 0x4 è Ctrl-D , 0x6 è Ctrl-F e 0x9 è il TAB).

Per esempio se volessi impostare il TAB come su linux devo inserire:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\"CompletionChar"=dword:00000009
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\"PathCompletionChar"=dword:00000009

Se il completamento è abilitato con l'opzione /F:ON, i due tasti di controllo usati sono Ctrl-D per il nome delle cartelle e Ctrl-F per quello dei nomi dei file. Per disabilitare un particolare completamento usare il valore si spazio (0x20) che non è un control character valido.

Il completamento è invocato ogni volta che viene premuto uno delle due sequenze impostate precedentemente. La funzione di completamento praticamente prende la stringa immessa e da questa crea una lista su tutte le possibili alternative che iniziano con la stringa già inserita, ne mostra quindi il primo percorso possibile, se non è possibile trovarne neanche uno allora emette un segnale acustico(beep). Premendo ripetutaemnte la combinazione di controllo (generalmente CTRL-D o F) vengono visualizzati in maniera ciclica tutti gli elementi della lista. Premento il tasto SHIFT + la combinazione scelta, la lista viene percorsa in senso opposto.

Come aprire una linea di comando su Drive e Cartelle aggiungendo una voce al menù contestuale

E' possibile eseguire le modifiche nei registri di windows direttamente a mano oppure creando un file .reg e inserendovi dentro i seguenti comandi:

[HKEY_CLASSES_ROOT\Directory\shell\DOS_Prompt]
@="Linea di comando"

[HKEY_CLASSES_ROOT\Directory\shell\DOS_Prompt\command]
@="cmd.exe /k cd %1"

[HKEY_CLASSES_ROOT\Drive\shell\DOS_Prompt]
@="Linea di comando"

[HKEY_CLASSES_ROOT\Drive\shell\DOS_Prompt\command]
@="cmd.exe /k cd %1"

 

Ultimo aggiornamento ( Domenica 11 Aprile 2010 16:30 )