La sintassi dei comandi si basa su quella impiegata in command.com e in generale nei file batch, per cui spesso le due applicazioni vengono confuse, ma le differenze tra le due shell sono profonde: command.com è un'applicazione a 16 bit mantenuta per compatibilità con MS-DOS e i sistemi operativi della famiglia Windows 9x, pertanto sui sistemi di famiglia NT viene eseguita all'interno della macchina virtualeNTVDM, con conseguente calo di prestazioni.
Al contrario, cmd.exe è un'applicazione console a 32 bit, che viene eseguita nativamente da Windows e che supporta tutta una serie di funzionalità aggiuntive rispetto a command.com, che sono state aggiunte via via nelle versioni successive di Windows: ad esempio numerose estensioni ai comandi IF, SET e FOR, l'espansione ritardata dei parametri, la cronologia dei comandi accessibile tramite i tasti freccia, il completamento automatico dei percorsi (disattivato di default prima di Windows XP).
Ogni comando può essere interno, che viene interpretato dall'applicazione, o un comando esterno che corrisponde a un file eseguibile presente nella cartellaSystem32, il cui standard output viene rediretto nella console. Ogni comando può avere argomenti, che vengono elencati dopo il nome del comando e sono tutti stringhe, essendo batch un linguaggio non tipizzato. Batch presenta alcune forme di strutture di controllo, che tuttavia non possono essere utilizzate nella shell, ma solo negli script.
Comandi interni
OS/2
Di seguito è riportato un elenco dei comandi cmd.exe interni di Microsoft OS / 2: