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?
cmd.exe
là một con thú hoàn toàn khác với MS-DOS.
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?
cmd.exe
là một con thú hoàn toàn khác với MS-DOS.
Câu trả lời:
Đ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.
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 có 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).
(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.com
từ 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.com
là một chương trình 16 bit trong khi cmd.exe
là 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.com
chỉ 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ì.
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).
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
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.
Đầ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ư
mode con:cols=COL lines=ROW
lệnh thay đổi kích thước bàn điều khiển và không có title
lệnhNhư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òngexit /b
hoặcgoto :eof
setlocal
vàendlocal
goto
chỉ có thể nhảy đến một nhãn, call
chỉ có thể bắt đầu một tập tin bó kháccá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
if
if cmdextversion
vàif defined
if [/i] string1 compare-op string2
call set %%var%suffix%=string
) các biến và không mở rộng chậm (ví dụ echo !var%suffix%!
)~xxxV
hỗ trợ biến%variable:~num1,num2%
hỗ trợ thay thế chuỗi con hoặc chuỗi%variable:str=newstr%
set
và
set /a
vì vậy bạn không thể làm số họcset /p
có nghĩa là đọc đầu vào của người dùng là một nỗi đauset "var=value"
cú pháp%*
cho toàn bộ dòng lệnhfor /d
, for /r
hoặc for /l
. Không for /f
nên đọc đầu vào từ các tập tin cũng khó khăn. Hình thức duy nhất for
trong DOS làFOR %variable IN (set) DO command [command-parameters]
findstr
, và find
không hỗ trợ Unicode%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
pushd/popd
cd /d
. Cũng không cd path with spaces
và cd "path with spaces"
do thiếu hỗ trợ tên tệp dàicolor
forfiles
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/
.bat
tập tin hiện đại khác với .bat
các tập tin MS DOS cũ ?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