Có phải Command Prompt và MS-DOS giống nhau không?


12

Tôi đã tranh luận với bạn tôi rằng Command Prompt chỉ là phiên bản GUI của MS-DOS hoạt động trong môi trường biểu mẫu Windows. Anh ấy hoàn toàn không đồng ý với tôi.

Ai đúng?


2
Nghiên cứu của bạn đã nói gì với bạn?
slhck

4
cmd.exelà một con thú hoàn toàn khác với MS-DOS.
Sathyajith Bhat

7
MS-DOS là một hệ điều hành. Dấu nhắc lệnh của Windows là một giao diện trông giống như MS-DOS.
Der Hochstapler


Câu trả lời:


20

Điều này đã đúng một lần, nhưng nó không còn nữa.

Từ giao diện dòng lệnh MS-DOS # Windows - Wikipedia :

Tất cả các phiên bản Microsoft Windows đều có giao diện dòng lệnh (CLI) MS-DOS. Điều này có thể chạy nhiều tiện ích DOS và các tiện ích dòng lệnh Win32, OS / 2 1.x và Posix khác nhau trong cùng một phiên dòng lệnh, cho phép tạo đường ống giữa các lệnh. Giao diện người dùng và biểu tượng cho đến Windows 2000, tuân theo giao diện MS-DOS gốc.

Windows tiêu dùng (tối đa 3.11, Win9x, WinME) chạy dưới dạng Giao diện người dùng đồ họa (GUI) chạy trên MS-DOS. Với Windows 95, 98 và ME, phần MS-DOS đã được tích hợp, coi cả hai hệ điều hành là một gói hoàn chỉnh. Dòng lệnh truy cập dòng lệnh DOS (thường là lệnh.com), thông qua mô-đun Windows (winoldap.mod).

Một dòng mới của Windows, (Windows NT), khởi động thông qua kernel với mục đích duy nhất là tải Windows. Người ta không thể chạy các ứng dụng Win32 trong hệ thống trình tải theo cách mà OS / 2, UNIX hoặc Windows tiêu dùng có thể khởi chạy các phiên chế độ ký tự.

Vì vậy, không, trong mọi Windows từ họ NT (ví dụ: XP, Vista, 7, 8), dấu nhắc lệnh và MS-DOS giống nhau về mặt trực quan, nhưng hoàn toàn khác nhau.


Thật ra, tôi sẽ nói nó không bao giờ đúng. Để tương đương cmd.exesẽ là command.commột thay nhỏ một phần của MSDOS.

9

Chúng là những thứ khác nhau - Dấu nhắc lệnh không phải là MS-DOS - nhưng theo như người dùng quan tâm thì chúng thể giống như khi chúng làm những việc tương tự.

Vì vậy, nó phụ thuộc vào quan điểm của bạn. Từ quan điểm kỹ thuật, bạn của bạn, điều đó đúng, nhưng từ góc độ người dùng, bạn đã đúng (giống như có những khác biệt mà một chuyên gia sẽ phát hiện ra).


Tôi nghĩ bạn có nghĩa ngược lại phải không? Anh ấy là người đúng về mặt kỹ thuật bởi vì họ không giống nhau theo nghĩa đen, người bạn là người thực tế đúng bởi vì họ là những điều tương tự với người dùng.
Brad

@Brad - cách tôi đọc câu hỏi là OP nói họ giống nhau nhưng bạn anh ta nói họ không.
ChrisF

8

Không.

(Trừ khi định nghĩa về bình đẳng của bạn không kéo dài quá khứ » Đó là giao diện văn bản và tôi có thể chạy các chương trình từ đó. « )

Những gì được chạy khi bạn bấm Dấu nhắc Lệnh trong Menu Bắt đầu là Bộ xử lý Lệnh Windows, hay còn gọi là cmd.exe. Các lệnh và cú pháp kịch bản tích hợp của nó (bao gồm nhiều quirks) dựa trên cổ command.comtừ CP / M và MS-DOS sau này, nhưng ngoài ra chúng là những thứ hoàn toàn riêng biệt. Ngoài ra, command.comlà một chương trình 16 bit trong khi cmd.exelà một ứng dụng bảng điều khiển Windows gốc.

Mọi thứ đã khác nhau trong Windows 95, 98 và ME, nơi command.com sẽ được chạy trong máy ảo MS-DOS với Windows đóng vai trò là trình ảo hóa (vâng, lúc đó họ đã có loại đó). Ở đó bạn có toàn bộ máy ảo chạy DOS. Nhưng trên Windows NT, 2000, XP, Vista và 7 - không. DOS chỉ sống ở ntvdm.exeđó là Máy ảo ảo NT, chỉ là một lớp mô phỏng mỏng, nắm bắt các cuộc gọi mà CPU không thể thực hiện trực tiếp (đó là lý do tại sao nó hoạt động nhanh hơn nhưng tệ hơn DOSBox).

Trong mọi trường hợp, thậm chí command.comchỉ là một vỏ cho DOS. Đó không phải là hệ điều hành.

Bên trong, tôi thực sự co rúm mỗi khi tôi thấy mọi người nhắc đến một cửa sổ có chữ màu xám đen là MS-DOS. Trong phần lớn các trường hợp họ không thực sự biết họ đang đề cập đến điều gì.


4

Theo những gì tôi hiểu, MS-DOS là hệ điều hành đĩa mà Microsoft phát hành. Dấu nhắc lệnh là giao diện phi đồ họa cho phép bạn tương tác với hệ điều hành của mình.

Command Prompt là một ứng dụng trình thông dịch dòng lệnh có sẵn trong hầu hết các hệ điều hành Windows, được gọi chính thức là Bộ xử lý lệnh Windows nhưng đôi khi được gọi là shell lệnh. Command Prompt là một chương trình Windows mô phỏng nhiều khả năng của dòng lệnh có sẵn trong MS-DOS nhưng thực tế nó không phải là MS-DOS.

Command Prompt là phiên bản GUI của Command.com trong MS-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.

Ví dụ, vì cmd.exe là một ứng dụng chế độ văn bản gốc trên OS / 2, nên nó có thể sử dụng các đường ống thực trong các đường ống lệnh, cho phép cả hai bên của đường ống chạy đồng thời. Do đó, có thể chuyển hướng lỗi tiêu chuẩn trong cmd.exe, không giống như.COM.COM. (HOL.COM sử dụng các tập tin tạm thời và chạy hai bên một cách thanh thản, lần lượt từng bên.)

Trong thực tế, cmd.exe là một chương trình Windows hoạt động như một trình thông dịch dòng lệnh giống như DOS. Nó thường tương thích, nhưng cung cấp các tiện ích mở rộng giải quyết một số hạn chế của HOL.COM (các giải thích trên được Wikipedia giới thiệu).


2

Bạn của bạn nói đúng. MS-DOS là / là một hệ điều hành (Microsoft đĩa hệ điều hành là những gì viết tắt là viết tắt của.) Các giao diện người dùng cho DOS được gọi là ( các ) dấu nhắc lệnh.

Một vài phiên bản Windows đầu tiên chạy trên DOS (biến chúng thành môi trường hoạt động về mặt kỹ thuật, mặc dù tôi không chắc ai đó tạo ra sự khác biệt đó nữa), nhưng các hệ điều hành sau này, bắt đầu với NT Kernel, đã không còn - DOS đã biến mất.

Tuy nhiên, mọi người vẫn cần chức năng được cung cấp bởi dấu nhắc lệnh và thay vì lệnh.com, chúng tôi đã nhận lệnh.exe (và ngày nay cmd.exe), khi chạy sẽ cung cấp cho chúng tôi một dấu nhắc lệnh.

Nhưng, đó không phải là dấu nhắc lệnh duy nhất (cũng không phải bất cứ nơi nào gần dấu nhắc đầu tiên) mà mọi người đã sử dụng. Command Prompts cũng được gọi là Shell và Unix có rất nhiều, và các lệnh khác nhau và thường rất mạnh mẽ. Nói về Power, Microsoft đã tạo ra một dấu nhắc lệnh mới cho Windows có tên PowerShell cực kỳ mạnh mẽ và thú vị. Xem Wikipedia để biết thêm: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces


> UI cho DOS được gọi là dấu nhắc lệnh (dấu). Ngoài ra, còn có một dòng lệnh khác.
Synetech

và CLI hoặc giao diện dòng lệnh.
Mark Allen

Về mặt kỹ thuật, CLI là một loại giao diện, không phải là một trường hợp cụ thể. Nó giống như gọi Windows là GUI (ví dụ: tôi đã sử dụng GUI Windows ). Bạn có thể nói nó, và nó đúng về mặt kỹ thuật / chính xác, nhưng nó sẽ thật kỳ lạ.
Synetech

Tôi chỉ gọi nó là một dấu nhắc lệnh. :)
Mark Allen

Tôi chỉ gọi nó là DOS (ít nhất là trước đây, tôi đã miễn cưỡng gọi nó là DOS thuần túy ).
Synetech

1

Chúng không giống nhau!

Rõ ràng nhiều người không nhận ra rằng Dấu nhắc DOS và Dấu nhắc lệnh Windows không giống nhau. Chúng thực sự là hai chương trình khác nhau - lần lượt là.COM.COM và CMD.EXE.

Biết lệnh của bạn nhắc nhở

Đầu tiên là do sự khác biệt trong nền tảng (DOS so với Windows) và trình thông dịch (lệnh.com so với cmd.exe), sẽ có những khác biệt rõ ràng như

  • DOS chạy ở chế độ toàn màn hình mà không có chế độ cửa sổ, vì vậy không có mode con:cols=COL lines=ROWlệnh thay đổi kích thước bàn điều khiển và không có titlelệnh
  • DOS không hỗ trợ đa nhiệm, nhiều người dùng, đăng ký, quyền, tên tệp dài, symlink / hardlink, mạng, Unicode, đĩa động và hỗ trợ âm lượng nâng cao ... vì vậy không có công cụ nào để quản lý chúng

Nhưng cũng có sự khác biệt lớn về khả năng và cú pháp của các lệnh nội bộ giữa lệnh.com và cmd.exe, cũng như một số công cụ bên ngoài trong hai môi trường. Trong MS-DOS có

  • Không có chức năng, khối mã ()và phạm vi cục bộ có nghĩa là

    • for, if... phải được theo sau bởi một đơn lệnh trên cùng một dòng
    • không exit /bhoặcgoto :eof
    • không setlocalendlocal
    • gotochỉ có thể nhảy đến một nhãn, callchỉ có thể bắt đầu một tập tin bó khác
    • các lệnh không thể được nhóm lại với nhau như

      (
      command1
      command2
      ) >output.txt
      
  • Không có nhân vật thoát ^. In các ký tự đặc biệt sẽ là một nỗi đau và không có khả năng chạy các lệnh đa dòng

  • Không có định dạng đặc biệt của if
    • không if cmdextversionif defined
    • không so sánh chuỗi số và trường hợp không nhạy if [/i] string1 compare-op string2
  • Không có lịch sử lệnh và hoàn thành đối số lệnh
  • Không mở rộng gián tiếp (ví dụ call set %%var%suffix%=string) các biến và không mở rộng chậm (ví dụ echo !var%suffix%!)
  • Không có thao tác chuỗi nâng cao
    • không ~xxxVhỗ trợ biến
    • không %variable:~num1,num2%hỗ trợ thay thế chuỗi con hoặc chuỗi%variable:str=newstr%
  • Không khớp tên biến một phần cho set
    • không set /avì vậy bạn không thể làm số học
    • không set /pcó nghĩa là đọc đầu vào của người dùng là một nỗi đau
    • không có set "var=value"cú pháp
  • Không %*cho toàn bộ dòng lệnh
  • Không for /d, for /rhoặc for /l. Không for /fnên đọc đầu vào từ các tập tin cũng khó khăn. Hình thức duy nhất fortrong DOS làFOR %variable IN (set) DO command [command-parameters]
  • Không findstr, và findkhông hỗ trợ Unicode
  • Không có biến môi trường đặc biệt như%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • Khả năng thay đổi thư mục hạn chế
    • Không pushd/popd
    • Không cd /d. Cũng không cd path with spacescd "path with spaces"do thiếu hỗ trợ tên tệp dài
  • Không color
  • Không forfiles
  • Không assoc(vì không có GUI và tệp phải được mở thủ công từ dòng lệnh, do đó không cần liên kết tệp)

Rất nhiều lệnh bên ngoài hữu ích trong Windows như where, sort, more (trong một số phiên bản DOS), sự lựa chọn ... cũng bị thiếu trong DOS


Và đây là những gì MS 'Rich Turner đã nói

Ngoài ra, Cmd! = MS-DOS!

Tôi cũng muốn chỉ ra một quan niệm sai lầm phổ biến được duy trì bởi các bài viết như những bài viết trên: Cmd <> MS-DOS!

Trong thực tế:

  • Microsoft cuối cùng đã xuất xưởng một phiên bản "mới" của MS-DOS (v8.0 trong Windows ME), vào ngày 16 tháng 9 năm 2000 - 16 năm trước (kể từ khi viết bài này) !!
  • MS-DOS là một hệ điều hành (mặc dù là một hệ điều hành tương đối đơn giản theo tiêu chuẩn ngày nay) có giao diện người dùng chính là vỏ dòng lệnh, cho đến khi Windows 3.x & 9.x đến và chạy trên / xung quanh MS-DOS
  • Ngôn ngữ kịch bản của dòng lệnh của MS-DOS tương đối ngắn gọn và mạnh mẽ vừa phải, nhưng thiếu nhiều tính năng phong phú hơn và tiên tiến hơn mà chúng ta có trong PowerShell, Bash, v.v.
  • Mặc dù các phiên bản sau của MS-DOS đã phát triển về độ tinh vi và thêm / thay thế một số phiên bản cũ hơn bằng mã mới được viết bằng 'C', phần lớn MS-DOS vẫn được viết bằng cách lắp ráp x86 cho hiệu quả và vì đó là cách duy nhất tại thời điểm đó truy cập vào nhiều thiết bị phần cứng và thiết bị ngoại vi. Điều này làm cho MS-DOS không thể di chuyển sang CPU không phải x86. Nếu bạn rất có khuynh hướng, bạn thực sự có thể tải xuống mã nguồn cho MS-DOS v1.1 và v2.0 để xem có bao nhiêu phiên bản trước đó của MS-DOS được viết trong cụm x86 (gợi ý: khá nhiều tất cả nó)

https://devbloss.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/


đọc thêm

Tóm lại, về mặt chức năng, chúng có thể hơi giống nhau một chút, nhưng về mặt khác thì cực kỳ khác biệt


1
Ồ, đây có vẻ là một câu trả lời tuyệt vời cho sự khác biệt giữa CMD và Command prompt trong windows là gì? cũng vậy
SamB
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.