Sự khác biệt giữa CMD và Command prompt trong windows là gì?


30

Cho đến bây giờ, tôi chưa bao giờ nghĩ (và chưa bao giờ quan sát) điều đó cmdcommandlà hai điều khác nhau. Chà, phải không?

Hãy nhìn vào bức ảnh này:

nhập mô tả hình ảnh ở đây

Trên thực tế, tôi thường mở cmdtừ hộp thoại Run bất cứ khi nào tôi muốn dòng lệnh (cho Git / VIM). Vì vậy, tôi đã tùy chỉnh vị trí hiển thị, phông chữ, màu sắc, v.v. Hôm nay, tôi, để thay đổi, gõ commandvào Run thay vì cmdvà thấy rằng có một cái gì đó mới trên cửa sổ của tôi. Nó có "DOS" trong cửa sổ của nó.

Vì vậy, rõ ràng nên có sự khác biệt giữa cmdcommand. Tôi muốn biết

  1. Sự khác biệt giữa chúng.
  2. Tại sao Microsoft tách chúng ra (Unix & Linux chỉ có một vỏ theo mặc định, Bash).

11
Tôi sẽ giả sử command.comlà phiên bản 16 bit cũ (chỉ có sẵn khi cài đặt 32 bit). Nó không tồn tại trên phiên bản 64 bit của Windows 7.
Der Hochstapler

11
UNIX và Linux có nhiều hơn một vỏ có sẵn. Shell mặc định thường là Bash.
ephsmith

@ephsmith đó là những gì tôi đã nói ..
Surya

Lưu ý rằng về mặt kỹ thuật, cụm từ "dấu nhắc lệnh" có thể được sử dụng để chỉ về lệnh.exe hoặc cmd.exe, nhưng trong thực tế hầu như luôn được sử dụng để chỉ cmd.exe.
Harry Johnston

Unix có tổng cộng bốn shell này là csh, ksh, bash, zsh.
Deb

Câu trả lời:


31

TL; DR

Khi bạn chạy chương trình điều khiển 32 bit, nó được thực thi bởi cmd; khi bạn chạy chương trình console 16 bit, nó được thực thi bởi command.

Chi tiết

Windows XP bao gồm một hệ thống con để hỗ trợ các ứng dụng 16 bit cũ hơn.

Các ứng dụng 16 bit cũ có sẵn ở cả hai chương trình DOS và Windows. Các chương trình DOS về bản chất là các ứng dụng giao diện điều khiển và chạy trong giao diện giống như dấu nhắc lệnh. Tuy nhiên, các ứng dụng bảng điều khiển Windows 32 bit rất giống nhau và trông giống nhau.

Bộ xử lý lệnh / trình thông dịch cmdcó một số mục đích:

  • Để thực thi văn bản 32-bit chương trình bảng điều khiển Windows
  • Để cung cấp và xử lý các chức năng dòng lệnh khác nhau ( dir, copy, vv)
  • Giải thích và thực thi các tệp bó ( .battệp tương thích DOS và .cmdtệp tương thích NT )

Khi bạn chạy một chương trình giao diện điều khiển 16 bit cũ, nó được thực hiện bởi NTVDM (Windows NT Virtual DOS Machine). Nó cung cấp một hệ thống DOS giả lập (do đó là máy DOS ảo ) tương tự như chạy một phần mềm máy ảo chuyên dụng, ngoại trừ lớp mô phỏng đơn giản hơn. commandlà phiên bản 16 bit của trình thông dịch lệnh gần với DOS thực tế hơn cmd.exelà chương trình Windows thực sự (và có tiêu đề Windows PE, không giống như command.comtiêu đề DOS MZ).

commandcó cùng mục đích cmdngoại trừ việc nó chỉ hỗ trợ các chương trình 16 bit. Ngoài ra, nó không hỗ trợ .cmdcác tệp và có ít lệnh tích hợp hơn và bị hạn chế hơn trong cú pháp của nó ( cmdlà trình thông dịch dòng lệnh mới hơn, hiện đại hơn, tiên tiến hơn, tương tự như 4DOS ).

Tuy nhiên, nó hỗ trợ các chương trình đồ họa DOS (như các trò chơi cũ), nhưng sự thành công của việc chạy chúng phụ thuộc vào trình điều khiển card màn hình và bản chất của chương trình. Có rất nhiều trang web cung cấp nhiều thủ thuật khác nhau để đưa các trò chơi DOS chạy trên Windows (mặc dù thành công trên Vista trở lên thường bị hạn chế hơn so với trên XP).

Cần lưu ý rằng các phiên bản Windows 64 bit đã hoàn toàn không hỗ trợ các chương trình 16 bit và do đó không bao gồm command, vì vậy cả chương trình DOS và Windows 16 bit sẽ không chạy và thay vào đó sẽ đưa ra thông báo lỗi (gây hiểu lầm) .


Ghi chú kỹ thuật

command.comcó một .comphần mở rộng để tương thích ngược với các chương trình DOS, nhưng giống như hầu hết các phiên bản Windows khác của các lệnh DOS bên ngoài, bên trong, nó thực sự là một .exetệp Windows PE . Điều này cung cấp một quan sát thú vị rằng mặc dù Windows sử dụng tiện ích mở rộng như một chỉ báo về cách xử lý hầu hết các loại tệp, đối với các loại thực thi, nó bỏ qua tiện ích mở rộng và xem xét nội dung của nó (nếu không thì .exesẽ không hoạt động nếu được coi là a .com). Câu hỏi này liên quan đến hiệu ứng này.


Mặc dù tất nhiên bạn có thể chạy chương trình giao diện điều khiển 32 bit từ cmd.exe, nhưng bạn không phải làm vậy. Nếu bạn bấm đúp vào tệp thực thi ở chế độ bảng điều khiển, nó sẽ không chạy "bên trong" cmd.exe. Tương tự, lệnh.exe không thực sự giống với NTVDM.
Harry Johnston

1
Tôi ghét bắt đầu một câu với một tên lệnh.
Synetech

> Command.exe không thực sự giống với NTVDM Không, nhưng nó là một phần của nó, cùng với một số DLL (Tôi đã học được điều này một cách khó khăn khi cố gắng để các ứng dụng bảng điều khiển 16 bit hoạt động trên hệ thống XP ).
Synetech

"Các chương trình DOS về bản chất là các ứng dụng console " - Tại sao bạn lại nói điều này? Các dòng không phải lệnh không phải là ứng dụng TUI DOS 'không tự nhiên' theo một cách nào đó? :)
Karan

Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Sắp xếp Trong 9x, chúng vẫn ổn, nhưng các ứng dụng đồ họa (ví dụ: trò chơi) không còn hoạt động bình thường nếu như trong XP +, do đó, phần lớn các ứng dụng DOS chạy trên Windows ngày nay thực sự là các công cụ dòng lệnh thay vì đầy đủ, ứng dụng đồ họa. Trên các máy 64 bit, các ứng dụng 16 bit hoàn toàn không chạy, nhưng ngay cả các ứng dụng 32 bit thường là các ứng dụng bảng điều khiển, đặc biệt là khi Vista bỏ hỗ trợ cho các bảng điều khiển toàn màn hình .
Synetech

8

Không giống như HOL.COM, là một chương trình DOS, cmd.exe là một ứng dụng Windows gốc thường chạy trong bảng điều khiển Win32. Điều này cho phép nó tận dụng các tính năng có sẵn cho các chương trình gốc trên nền tảng không có sẵn cho các chương trình DOS.

cũng thế...

Cả hai phiên bản OS / 2 và Windows NT của cmd.exe đều có thông báo lỗi chi tiết hơn so với "Lệnh xấu hoặc tên tệp" (trong trường hợp các lệnh không đúng định dạng) của lệnh.com.

Đó là từ bài viết Wikipedia thông tin này.

Có đề cập đến cách các lệnh Command.com cũ hơn đã được đưa vào chức năng cmd.exe mới hơn ... ví dụ ...

chức năng của deltree (lệnh.com) đã được chuyển thành hàm thứ tự (cmd.exe) dưới dạng tham số / s

Vì vậy, hãy đọc lên.


5

command.com là vỏ DOS, được cung cấp để tương thích.

cmd.exe là một chương trình Win32 bản địa, được kế thừa từ OS / 2.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.