Condividi tramite


Cmd

Avvia una nuova istanza dell'interprete dei comandi cmd.exe. Se utilizzato senza parametri, cmd visualizza le informazioni sulla versione e sul copyright del sistema operativo.

Annotazioni

Gli utenti che cercano funzionalità più avanzate sono invitati a esplorare PowerShell per migliorare la creazione di script e l'automazione.

Sintassi

cmd [/c|/k] [/s] [/q] [/d] [/a|/u] [/t:{<b><f> | <f>}] [/e:{on | off}] [/f:{on | off}] [/v:{on | off}] [<string>]

Parametri

Parametro Descrizione
/c Esegue il comando specificato da <string> e quindi esce dal processore di comandi.
/Okay Esegue il comando specificato da <string> e mantiene in esecuzione il processore di comandi.
/s Se usato con /c o /k, attiva regole speciali non di analisi che ristriscono le virgolette () e le virgolette (") ma <string> lascia invariato il resto del comando.
/q Disattiva l'eco.
/d Disabilita l'esecuzione dei comandi di esecuzione automatica.
/un Formatta l'output dei comandi come American National Standards Institute (ANSI).
/u Formatta l'output del comando come Unicode.
/t:{<b><f> | <f>} Imposta i colori di sfondo (b) e di primo piano (f).
/e:on Abilita le estensioni dei comandi.
/e:off Disabilita le estensioni dei comandi.
/f:on Abilita il completamento dei nomi di file e directory.
/f:off Disabilita il completamento dei nomi di file e directory.
/v:on Abilita l'espansione ritardata della variabile di ambiente.
/v:off Disabilita l'espansione ritardata della variabile di ambiente.
<string> Specifica il comando da eseguire.
/? Visualizza la Guida al prompt dei comandi.

Nella tabella seguente sono elencate le cifre esadecimali valide che è possibile usare come valori per <b> e <f>:

Valore Colore
0 Nero
1 Blu
2 Verde
3 Acqua
4 Rosso
5 Porpora
6 Giallo
7 Bianco
8 Grigio
9 Azzurro
un Verde chiaro
b Azzurro
c Rosso chiaro
d Viola chiaro
e Giallo chiaro
f Bianco brillante

Osservazioni:

  • Per reindirizzare l'output del comando all'input di un altro comando, usare l'operatore pipe (|). Per esempio:

    <command1> | <command2>
    
  • L'operatore double pipe (||) viene usato per eseguire il comando successivo solo se il comando precedente ha esito negativo. Nello scenario specificato, command2 viene eseguito solo se command1 ha esito negativo. Per esempio:

    <command1> || <command2>
    
  • Per reindirizzare l'output del comando a un file, usare il carattere parentesi > angolare maggiore di . Per esempio:

    <command1> > <file1.txt>
    
  • Per raggruppare o annidare più comandi insieme, usare &. Per esempio:

    <command1> & <command2>
    
  • Per usare più comandi per <string>, separarli in base al separatore &&di comando . Per esempio:

    <command1> && <command2> && <command3>
    

    Annotazioni

    Quando si usa &&, il comando seguente && viene eseguito solo se il comando precedente viene completato correttamente. Cmd esegue il primo comando e procede alla successiva solo se il comando precedente ha avuto esito positivo. In caso contrario, se il comando precedente ha esito negativo, i comandi successivi non verranno eseguiti.

  • Le parentesi e commerciale &, pipe |e ( ) sono caratteri speciali che devono essere preceduti dal carattere ^ di escape o dalle virgolette quando vengono passate come argomenti.

  • Se un comando completa correttamente un'operazione, restituisce un codice di uscita pari a zero (0) o nessun codice di uscita.

  • Se il percorso della directory, i file o le informazioni fornite contengono spazi, è necessario usare le virgolette doppie (" ") intorno al testo, ad esempio "Computer Name". Per esempio:

    mkdir Test && mkdir "Test 2" && move "Test 2" Test
    
  • È necessario usare le virgolette intorno ai caratteri speciali seguenti: & <> [ ] | { } ^ = ; ! ' + , ' ~ [spazio vuoto].

  • Se si specifica /c o /k, i cmd processi, il resto di <string>e le virgolette vengono mantenute solo se vengono soddisfatte tutte le condizioni seguenti:

    • Non si usa /sanche .
    • Si usa esattamente un set di virgolette.
    • Non si usano caratteri speciali tra virgolette, ad esempio : & <> ( ) @ ^ |.
    • Si usano uno o più spazi vuoti all'interno delle virgolette.
    • Le <string> virgolette all'interno sono il nome di un file eseguibile.

    Se le condizioni precedenti non vengono soddisfatte, <string> viene elaborata esaminando il primo carattere per verificare se si tratta di una virgoletta di apertura. Se il primo carattere è una virgoletta aperta, viene rimosso insieme alle virgolette di chiusura. Qualsiasi testo che segue le virgolette di chiusura viene mantenuto.

  • Se non si specifica /d, cmd cerca le seguenti sottochiavi del Registro di sistema:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ

    Se sono presenti una o entrambe le sottochiavi del Registro di sistema, vengono eseguite prima di tutte le altre variabili.

  • È possibile disabilitare le estensioni dei comandi per un determinato processo usando /e:off. È possibile abilitare o disabilitare le estensioni per tutte le cmd opzioni della riga di comando in un computer o in una sessione utente impostando i valori di REG_DWORD seguenti:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD

    Impostare il valore REG_DWORD su 0×1 (abilitato) o 0×0 (disabilitato) nel Registro di sistema usando Regedit.exe. Le impostazioni specificate dall'utente hanno la precedenza sulle impostazioni del computer e le opzioni della riga di comando hanno la precedenza sulle impostazioni del Registro di sistema.

    Attenzione

    È possibile che eventuali modifiche non corrette del Registro di sistema danneggino gravemente il sistema. Prima di apportare modifiche al Registro di sistema, si consiglia di effettuare il backup di tutti i dati importanti presenti sul computer.

  • Quando si abilitano le estensioni dei comandi, vengono interessati i comandi seguenti:

    • assoc
    • call
    • chdir (cd)
    • color
    • del (erase)
    • endlocal
    • for
    • ftype
    • goto
    • if
    • mkdir (md)
    • popd
    • prompt
    • pushd
    • set
    • setlocal
    • shift
    • start (include anche modifiche ai processi di comando esterni)
  • Se si abilita l'espansione ritardata della variabile di ambiente, è possibile usare il carattere punto esclamativo (!) per sostituire il valore di una variabile di ambiente in fase di esecuzione.

  • Il completamento dei nomi di file e directory non è abilitato per impostazione predefinita. È possibile abilitare o disabilitare il completamento del nome file per un particolare processo del cmd comando con /f:{on | off}.

  • È possibile abilitare o disabilitare il completamento dei nomi di file e directory per tutti i processi del cmd comando in un computer o per una sessione di accesso utente impostando i valori di REG_DWORD seguenti:

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    • HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD

    • HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD

    Per impostare il valore REG_DWORD , eseguire Regedit.exe e usare il valore esadecimale di un carattere di controllo per una determinata funzione, ad esempio 0×9 è TAB e 0×08 è BACKSPACE. Usare il valore [0×20] per lo spazio vuoto, perché non è un carattere di controllo valido. Le impostazioni specificate dall'utente hanno la precedenza sulle impostazioni del computer e le opzioni della riga di comando hanno la precedenza sulle impostazioni del Registro di sistema.

    Attenzione

    È possibile che eventuali modifiche non corrette del Registro di sistema danneggino gravemente il sistema. Prima di apportare modifiche al Registro di sistema, si consiglia di effettuare il backup di tutti i dati importanti presenti sul computer.

  • Se si abilita il completamento dei nomi di file e directory usando /f:on, usare CTRL+D per il completamento del nome della directory e CTRL+F per il completamento del nome file. L'unica differenza tra le combinazioni di tasti CTRL+D e CTRL+F è che CTRL+D corrisponde solo ai nomi di directory e CTRL+F corrisponde ai nomi di file e directory. Se si usa il completamento dei nomi di file e directory nei comandi cddi directory predefiniti , mdo rd, si presuppone il completamento della directory.

  • Premendo CTRL+D o CTRL+F , il file e il completamento del nome della directory vengono elaborati. Queste funzioni di combinazione di tasti aggiungono un carattere jolly a <string> se non è presente, compila un elenco di percorsi corrispondenti e quindi visualizza il primo percorso corrispondente. Se nessuno dei percorsi corrisponde, il file e la funzione di completamento del nome della directory vengono visualizzati e non cambiano la visualizzazione.

    • Per spostarsi nell'elenco dei percorsi corrispondenti, premere ripetutamente CTRL+D o CTRL+F .
    • Per spostarsi all'indietro nell'elenco, premere il tasto MAIUSC e CTRL+D o CTRL+F contemporaneamente.
    • Per eliminare l'elenco salvato di percorsi corrispondenti e generare un nuovo elenco, modificare <string> e premere CTRL+D o CTRL+F.
    • Se si passa da CTRL+D a CTRL+F, l'elenco salvato di percorsi corrispondenti viene rimosso e viene generato un nuovo elenco.
  • Il completamento del nome di file e directory elabora correttamente i nomi di file contenenti spazi vuoti o caratteri speciali se si inserisce virgolette intorno al percorso corrispondente.

  • Se si elabora il completamento del nome di file e directory dall'interno <string>di , nel punto in <string> cui è stato elaborato il completamento, qualsiasi parte del percorso a destra del cursore viene rimossa.

Uso delle variabili di ambiente

L'ambiente cmd della shell dei comandi è definito da variabili che determinano il comportamento della shell dei comandi e del sistema operativo. È possibile definire il comportamento dell'ambiente della shell dei comandi o dell'intero ambiente del sistema operativo usando due tipi di variabili di ambiente, sistema e locale. Le variabili di ambiente di sistema definiscono il comportamento dell'ambiente del sistema operativo globale. Le variabili di ambiente locali definiscono il comportamento dell'ambiente dell'istanza corrente di cmd.

Solo gli utenti con privilegi amministrativi possono modificare le variabili di sistema. Queste variabili vengono usate più comunemente negli script di accesso. Le variabili di ambiente locali sono disponibili solo quando l'utente per cui sono stati creati è connesso al computer. Le variabili locali impostate nell'hive HKEY_CURRENT_USER sono valide solo per l'utente corrente, ma definiscono il comportamento dell'ambiente del sistema operativo globale.

L'elenco seguente descrive i vari tipi di variabili in ordine decrescente di precedenza:

  1. Variabili di sistema predefinite.
  2. Variabili di sistema trovate nell'hive HKEY_LOCAL_MACHINE .
  3. Variabili locali trovate nell'hive HKEY_CURRENT_USER .
  4. Tutte le variabili di ambiente e i percorsi impostati nel file Autoexec.bat.
  5. Tutte le variabili di ambiente e i percorsi impostati in uno script di accesso (se presente).
  6. Variabili usate in modo interattivo in uno script o in un file batch.

Nella shell dei comandi ogni istanza di cmd eredita l'ambiente dell'applicazione padre. È quindi possibile modificare le variabili nel nuovo cmd ambiente senza influire sull'ambiente dell'applicazione padre.

È possibile visualizzare le variabili di ambiente nell'ambiente eseguendo uno dei comandi seguenti:

set
Get-ChildItem Env:

Impostazione delle variabili di ambiente

Per visualizzare una variabile, digitare:

set <VariableName>

Per aggiungere una variabile, digitare:

set <VariableName>=<value>

Per eliminare una variabile, digitare:

set <VariableName>=

È possibile usare la maggior parte dei caratteri come valori di variabile, incluso lo spazio vuoto. Se si usano i caratteri <speciali , , >, |, &o ^, è necessario precederli con il carattere di escape ^ le virgolette doppie. Se si usano virgolette doppie, vengono incluse come parte del valore perché tutto ciò che segue il segno di uguale viene preso come valore. Si considerino gli esempi seguenti:

Per creare il valore New&Namedella variabile , digitare:

set <VariableName>=New^&Name

Per creare il valore "New&Name"della variabile , digitare:

set <VariableName>="New&Name"

Se si digita set <VariableName>=New&Name (senza virgolette doppie o carat ^ ) al prompt dei comandi, potrebbe essere visualizzato il messaggio di errore seguente:

"'Name' is not recognized as an internal or external command, operable program or batch file."

I nomi delle variabili non fanno distinzione tra maiuscole e minuscole. Tuttavia, set visualizza la variabile esattamente come è stata digitata. È possibile combinare lettere maiuscole e minuscole nei nomi delle variabili per rendere il codice più leggibile, ad esempio UserName.

Annotazioni

  • La dimensione massima della variabile di ambiente è di 8.192 byte.
  • La dimensione totale massima per tutte le variabili di ambiente, inclusi nomi, valori e segni di uguale, è di 65.536 caratteri per un processo.

Sostituzione dei valori delle variabili di ambiente

Per sostituire i valori delle variabili nella riga di comando o negli script, racchiudere il nome della variabile nei segni di percentuale (%VariableName%). In questo modo è possibile cmd fare riferimento al valore della variabile anziché considerarlo come testo letterale. Quando viene eseguito uno script, cmd sostituisce le istanze della variabile con il relativo valore. Ad esempio, l'uso di %USERNAME% in uno script sostituisce automaticamente il nome utente effettivo. La sostituzione delle variabili non è ricorsiva; cmd controlla le variabili una sola volta.