Apa perbedaan antara CMD dan Command prompt di windows?

30

Sampai sekarang, saya tidak pernah berpikir (dan tidak pernah mengamati) itu cmddan commandada dua hal yang berbeda. Ya, benar?

Lihatlah foto ini:

masukkan deskripsi gambar di sini

Sebenarnya, saya biasanya membuka cmddari dialog Run setiap kali saya ingin command-line (untuk Git / VIM). Jadi, saya mengkustomisasi posisi tampilan, font, warna, dll. Hari ini, saya, commandsebagai gantinya , mengetik Run bukannya cmddan menemukan bahwa ada sesuatu yang baru di jendela saya. Ini memiliki "DOS" di jendelanya.

Jadi, jelas harus ada perbedaan antara cmddan command. Saya ingin tahu

  1. Perbedaan di antara mereka.
  2. Mengapa Microsoft memisahkan mereka (Unix & Linux hanya memiliki satu shell secara default, Bash).
Surya
sumber
11
Saya akan menganggap command.comadalah versi 16bit lama (hanya tersedia pada instalasi 32bit). Itu tidak ada pada versi 64bit saya dari Windows 7.
Der Hochstapler
11
UNIX dan Linux memiliki lebih dari satu shell yang tersedia. Shell default biasanya Bash.
ephsmith
@ fsmith, itulah yang saya katakan ..
Surya
Perhatikan bahwa frasa "command prompt" secara teknis dapat digunakan untuk merujuk ke command.exe atau cmd.exe, tetapi dalam praktiknya hampir selalu digunakan untuk berarti cmd.exe.
Harry Johnston
Unix memiliki total empat shell yaitu csh, ksh, bash, zsh.
Deb

Jawaban:

31

TL; DR

Ketika Anda menjalankan program konsol 32-bit, itu dijalankan oleh cmd; ketika Anda menjalankan program konsol 16-bit, itu dijalankan oleh command.

Detail

Windows XP mencakup subsistem untuk mendukung aplikasi 16-bit yang lebih lama.

Aplikasi 16-bit lama tersedia sebagai program DOS dan Windows. Program DOS pada dasarnya adalah aplikasi konsol dan dijalankan dalam apa yang tampak seperti command-prompt. Namun aplikasi konsol Windows 32-bit sangat mirip dan terlihat sama.

Pemroses perintah / juru bahasa cmdmemiliki beberapa tujuan:

  • Untuk menjalankan program konsol Windows teks 32-bit
  • Untuk memberikan dan menangani berbagai fungsi command-line ( dir, copy, dll)
  • Menafsirkan dan mengeksekusi file batch ( .batfile yang kompatibel dengan DOS dan .cmdfile yang kompatibel dengan NT )

Ketika Anda menjalankan program konsol 16-bit lama, itu dijalankan oleh NTVDM (Windows NT Virtual DOS Machine). Ini menyediakan sistem DOS yang ditiru (karenanya mesin DOS virtual ) yang mirip dengan menjalankan perangkat lunak mesin virtual khusus, kecuali lapisan emulasi lebih sederhana. commandadalah versi 16-bit dari command-interpreter yang jauh lebih dekat dengan DOS sebenarnya daripada cmd.exeyang sebenarnya merupakan program Windows (dan memiliki header Windows PE, tidak seperti command.comyang memiliki header DOS MZ).

commandmemiliki tujuan yang sama seperti cmdkecuali bahwa itu hanya mendukung program 16-bit. Selain itu, ia tidak mendukung .cmdfile dan memiliki lebih sedikit perintah bawaan dan lebih terbatas dalam sintaksisnya ( cmdadalah penerjemah baris perintah yang lebih baru, lebih modern, lebih maju, mirip dengan 4DOS ).

Namun, ini mendukung program DOS grafis (seperti game lama), tetapi keberhasilan menjalankannya tergantung pada driver kartu video dan sifat program. Ada banyak situs yang menawarkan berbagai trik untuk menjalankan game DOS di Windows (walaupun keberhasilan di Vista dan yang lebih tinggi biasanya lebih terbatas daripada di XP).

Perlu dicatat bahwa Windows versi 64-bit telah sepenuhnya menjatuhkan dukungan dari program 16-bit, dan karenanya tidak termasuk commandsama sekali, sehingga baik program DOS maupun Windows 16-bit tidak akan berjalan dan sebagai gantinya akan mengirimkan pesan kesalahan (menyesatkan) .


Catatan teknis

command.commemiliki .comekstensi untuk kompatibilitas mundur dengan program DOS, tetapi seperti kebanyakan versi Windows lainnya dari perintah DOS eksternal, secara internal, itu sebenarnya adalah .exefile Windows PE . Ini memberikan pengamatan menarik bahwa sementara Windows menggunakan ekstensi sebagai indikator bagaimana menangani sebagian besar tipe file, untuk yang dapat dieksekusi, ekstensi tersebut mengabaikan ekstensi dan melihat isinya (jika .exetidak, tidak akan berfungsi jika diperlakukan sebagai a .com). Pertanyaan ini berkaitan dengan efek ini.

Synetech
sumber
Meskipun Anda tentu saja dapat menjalankan program konsol 32-bit dari cmd.exe, Anda tidak harus melakukannya. Jika Anda mengklik dua kali file executable mode-konsol, itu tidak menjalankan "di dalam" cmd.exe. Demikian pula, command.exe tidak benar-benar sama dengan NTVDM.
Harry Johnston
1
Aku benci memulai kalimat dengan nama-perintah.
Synetech
> command.exe sebenarnya tidak sama dengan NTVDM No, tetapi itu adalah bagian darinya, bersama dengan beberapa DLL (saya mempelajari ini dengan cara yang sulit ketika mencoba untuk mendapatkan aplikasi konsol 16-bit untuk bekerja pada sistem XP ).
Synetech
"Program DOS pada dasarnya adalah aplikasi konsol " - Mengapa Anda mengatakan ini? Apakah aplikasi non-perintah baris non-TUI DOS 'tidak alami' dalam beberapa hal? :)
Karan
Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Semacam. Dalam 9x, mereka baik-baik saja, tetapi aplikasi grafis (misalnya, game) tidak lagi berfungsi dengan baik jika sama sekali di XP +, sehingga sebagian besar aplikasi DOS yang dijalankan pada Windows (biasanya) saat ini memang merupakan alat baris perintah alih-alih aplikasi grafis yang lengkap. Pada mesin 64-bit, aplikasi 16-bit tidak berjalan sama sekali, tetapi bahkan aplikasi 32-bit biasanya merupakan aplikasi konsol, terutama karena Vista menjatuhkan dukungan untuk konsol layar penuh .
Synetech
8

Tidak seperti COMMAND.COM, yang merupakan program DOS, cmd.exe adalah aplikasi Windows asli yang biasanya berjalan di konsol Win32. Ini memungkinkannya memanfaatkan fitur yang tersedia untuk program asli pada platform yang tidak tersedia untuk program DOS.

juga...

Baik OS / 2 dan versi Windows NT dari cmd.exe memiliki pesan kesalahan lebih rinci daripada selimut "Perintah buruk atau nama file" (dalam kasus perintah salah) dari command.com.

Itu dari artikel Wikipedia yang informatif ini.

Ada disebutkan tentang bagaimana perintah command.com yang lebih lama telah digulirkan ke fungsi cmd.exe yang lebih baru ... misalnya ...

fungsi deltree (command.com) digulirkan ke rd (cmd.exe) dalam bentuk parameter / s

Jadi, silakan baca.

Bon Gart
sumber
5

command.com adalah shell DOS, disediakan untuk kompatibilitas.

cmd.exe adalah program Win32 asli, yang diwarisi dari OS / 2.

kinokijuf
sumber