COMMAND.COM là trình thông dịch dòng lệnh mặc định cho DOS, Windows 95, Windows 98 và Windows Me. Trong trường hợp của DOS, nó cũng là giao diện người dùng mặc định. Chương trình này có vai trò bổ sung với tư cách là chương trình đầu tiên chạy sau khi khởi động, do đó nó chịu trách nhiệm thiết lập hệ thống bằng cách chạy tệp cấu hình AUTOEXEC.BAT, và là tổ tiên của tất cả các quy trình. Trình thông dịch tiếp theo của COMMAND.COM trên hệ điều hành OS/2 và Windows NT là Cmd.exe, mặc dù COMMAND.COMcó sẵn trên các phiên bản IA-32 của các hệ điều hành trên.
COMMAND.COM là một chương trình DOS. Các chương trình được khởi chạy từ COMMAND.COM là các chương trình DOS sử dụng MS-DOS API để giao tiếp với hệ điều hành (DOS).
Chế độ hoạt động
COMMAND.COM có hai chế độ hoạt động riêng biệt. Đầu tiên là chế độ tương tác, trong đó người dùng gõ các lệnh và được thực hiện ngay lập tức. Thứ hai là chế độ hàng loạt (batch), thực thi một chuỗi lệnh được xác định trước được lưu trữ dưới dạng tệp văn bản có đuôi .BAT.
Lệnh nội bộ
Lệnh nội bộ là các lệnh được lưu trữ trực tiếp bên trong file nhị phân COMMAND.COM. Vì vậy, chúng luôn có sẵn nhưng chỉ có thể được thực hiện trực tiếp từ trình thông dịch lệnh.
Tất cả các lệnh được thực hiện sau khi phím ↵ Enter được nhấn ở cuối dòng. COMMAND.COM không phân biệt chữ hoa chữ thường, nghĩa là các lệnh có thể được gõ vào bất kỳ hỗn hợp nào của chữ hoa và chữ thường.
BREAK
Kiểm soát việc xử lý gián đoạn chương trình bằng Ctrl+C hoặc Ctrl+Break.
CHCP
Hiển thị hoặc thay đổi trang mã hệ thống hiện tại.
Sao chép tệp này sang tệp khác (nếu tệp đích đã tồn tại, MS-DOS sẽ hỏi có nên thay thế tệp đó hay không). (Xem thêm XCOPY, một lệnh bên ngoài cũng có thể sao chép các cây thư mục).
CTTY
Xác định thiết bị để sử dụng cho đầu vào và đầu ra.
Xóa tệp. Khi được sử dụng trên một thư mục, chỉ xóa tất cả các tệp trong thư mục đó. Trong khi đó, lệnh DELTREE bên ngoài xóa tất cả các thư mục con và các tệp bên trong một thư mục cũng như chính thư mục đó.
Cấu trúc điều khiển chủ yếu được sử dụng bên trong các tập tin batch, mặc dù chúng cũng có thể được sử dụng tương tác.[1][2]
:label
Xác định mục tiêu cho GOTO.
CALL
Thực hiện một tập tin thực thi khác và trở về tệp cũ và tiếp tục.
FOR
Lặp lại: lặp lại một lệnh cho mỗi bộ trong số các tệp được chỉ định.
GOTO
Di chuyển thực hiện đến một nhãn được chỉ định. Nhãn được chỉ định ở đầu dòng, với dấu hai chấm. (:likethis).
IF
Câu lệnh điều kiện, cho phép phân nhánh thực hiện chương trình.
PAUSE
Dừng thực hiện chương trình và hiển thị thông báo yêu cầu người dùng nhấn bất kỳ phím nào để tiếp tục.
REM
nhận xét: bất kỳ văn bản nào sau lệnh này đều bị bỏ qua.
SHIFT
Thay thế từng thông số với thông số tiếp theo (ví dụ: %0 with %1, %1 with %2, v.v...).
Lệnh IF
Khi thoát, tất cả các lệnh bên ngoài gửi mã trả về (giá trị từ 0 đến 255) cho chương trình gọi. Hầu hết các chương trình đều có một quy ước nhất định cho các mã trả về của chúng (ví dụ, 0 để thực thi thành công)..[3][4][5][6]
Nếu một chương trình được gọi bởi COMMAND.COM, lệnh IF bên trong có điều kiện ERRORLEVEL của nó có thể được sử dụng để kiểm tra các điều kiện lỗi của chương trình bên ngoài được gọi cuối cùng.
Trong COMMAND.COM, các lệnh nội bộ không thiết lập một giá trị mới.
Các biến số
Các file batch cho COMMAND.COM có thể có bốn loại biến:
Biến môi trường: Chúng có dạng% VARIABLE% và được liên kết với các giá trị bằng câu lệnh SET. Trước khi DOS 3 COMMAND.COM sẽ chỉ mở rộng các biến môi trường ở chế độ hàng loạt; nghĩa là, không tương tác tại dấu nhắc lệnh.[cần dẫn nguồn]
Thông số thay thế: Chúng có dạng% 0,% 1...% 9 và ban đầu chứa tên lệnh và chín tham số dòng lệnh đầu tiên được truyền cho kịch bản (ví dụ, nếu lệnh gọi là "myscript.bat John Doe", thì% 0 là "myscript.bat",% 1 là "John" và% 2 là "Doe"). Các tham số ở bên phải của thứ chín có thể được ánh xạ vào phạm vi bằng cách sử dụng câu lệnh SHIFT.
Các biến vòng lặp: Được sử dụng trong các vòng lặp, chúng có định dạng %% khi chạy trong các tệp lô. Các biến này được định nghĩa chỉ trong một câu lệnh FOR cụ thể và lặp qua một tập hợp các giá trị nhất định được xác định trong câu lệnh FOR đó.
Bởi vì DOS là một hệ điều hành đơn nhiệm,đường ống được thực hiện bằng cách chạy các lệnh tuần tự, chuyển hướng đến và từ một tệp tạm thời. COMMAND.COM không cung cấp điều khoản cho việc chuyển hướng kênh lỗi chuẩn.
command < filename
Chuyển hướng nhập chuẩn từ tệp hoặc thiết bị
command > filename
Chuyển hướng đầu ra tiêu chuẩn, ghi đè tệp đích nếu nó tồn tại.
command >> filename
Chuyển hướng đầu ra tiêu chuẩn, thêm vào cuối tệp đích nếu nó tồn tại.
command1 | command2
Đầu ra tiêu chuẩn theo đường ống từ lệnh1 đến đầu vào tiêu chuẩn của lệnh2
command1 ¶ command2
Các lệnh được viết phân cách bằng ký tự by ASCII-20 (¶, tạo ra bằng cách bấm Ctrl+T) được thực hiện theo thứ tự (chuỗi các lệnh).[1] Nói cách khác, command1 được thực hiện cho đến khi kết thúc, sau đó đến command2.[1] Đây là một tính năng không có ghi lại trong văn bản của COMMAND.COM của MS-DOS/PC DOS 5.0 và cao hơn.[1] Nó cũng được hỗ trợ bởi COMMAND.COM của gia đình Windows NT cũng như DR-DOS 7.07. Tất cả các phiên bản của DR-DOS COMMAND.COM đã hỗ trợ chức năng nội bộ tương tự bằng cách sử dụng dấu chấm than (!) thay thế (một tính năng có nguồn gốc từ Concurrent DOS và Multiuser DOS) - tuy nhiên, trong dòng đơn người dùng, tính năng này chỉ có sẵn trong nội bộ (trong các kịch bản khởi động dựng sẵn như "! DATE! TIME") và gián tiếp thông qua tham số $T của DOSKEY to avoid problems with ! để tránh các vấn đề với! dưới dạng một ký tự tên tệp hợp lệ.[1]4DOS hỗ trợ dấu phân tách dòng lệnh có thể cấu hình (4DOS.INI CommandSep= hoặc SETDOS /C), mặc định là ^.[8] COMMAND.COM trong các phiên bản mới hơn của Windows NT cũng hỗ trợ một dấu phân cách và khả năng tương thích với cú pháp cmd trong OS / 2 và họ hệ thống Windows NT.[8] (cmd, tuy nhiên, không hỗ trợ dấu phân tách ¶.)
Hạn chế
Độ dài dòng lệnh trong chế độ tương tác được giới hạn trong 126 ký tự.[9]
Trong nền văn hóa phổ biến
"Loading COMMAND.COM" có thể được nhìn thấy trên màn hình HUD của Terminator và màn hình nội bộ của RoboCop khi robot này khởi động lại.
Trong loạt phim truyền hình của trẻ em CGI ReBoot, diễn ra bên trong máy tính, người đứng đầu của một hệ thống (tương đương với một thành phố) được gọi là COMMAND.COM.
Tên miền command.com đã từng lưu trữ một trang web có hình ảnh dấu nhắc lệnh đã chạy xong lệnh "dir" trên thư mục gốc của ổ đĩa C trống. Tuy nhiên, lệnh kết quả hiển thị không chính xác: các thư mục. và.. không bao giờ được hiển thị trong thư mục gốc của ổ đĩa.[10]
^Paul, Matthias (ngày 1 tháng 5 năm 1997) [1993]. BATTIPs — Tips & Tricks zur Programmierung von Batchjobs. MPDOSTIP (bằng tiếng Đức). 7: ERRORLEVEL abfragen. Lưu trữ bản gốc ngày 23 tháng 8 năm 2017. Truy cập ngày 23 tháng 8 năm 2017. (NB. BATTIPS.TXT is part of MPDOSTIP.ZIP. The provided link points to a HTML-converted older version of the BATTIPS.TXT file.)
^ abcBrothers, Hardin; Rawson, Tom; Conn, Rex C.; Paul, Matthias; Dye, Charles E.; Georgiev, Luchezar I. (ngày 27 tháng 2 năm 2002). 4DOS 8.00 online help. […] Multiple Commands: You can type several commands on the same command line, separated by a caret [^]. For example, if you know you want to copy all of your.TXT files to drive A: and then run CHKDSK to be sure that drive A's file structure is in good shape, you could enter the following command: C:\>COPY *.TXT A: ^ CHKDSK A: You may put as many commands on the command line as you wish, as long as the total length of the command line does not exceed 511 characters. You can use multiple commands in aliases and batch files as well as at the command line. If you don't like using the default command separator, you can pick another character using the SETDOS /C command or the CommandSep directive in 4DOS.INI. […] SETDOS /C: (Compound character) This option sets the character used for separating multiple commands on the same line. The default is the caret [^]. You cannot use any of the redirection characters [<>|], or the blank, tab, comma, or equal sign as the command separator. The command separator is saved by SETLOCAL and restored by ENDLOCAL. This example changes the separator to a tilde [~]: C:\>SETDOS /C~ (You can specify either the character itself, or its ASCII code as a decimal number, or a hexadecimal number preceded by 0x.) […] CommandSep = c (^): This is the character used to separate multiple commands on the same line. […] Special Character Compatibility: If you use two or more of our products, or if you want to share aliases and batch files with users of different products, you need to be aware of the differences in three important characters: the Command Separator […], the Escape Character […], and the Parameter Character […]. The default values of each of these characters in each product is shown in the following chart: […] Product, Separator, Escape Parameter […] 4DOS: ^, ↑, & […] 4OS2, 4NT, Take Command: &, ^, $ […] (The up-arrow [↑] represents the ASCII Ctrl-X character, numeric value 24.) […]
^Paul, Matthias (ngày 1 tháng 7 năm 1997) [1994]. MSDOSTIPs — Tips für den Umgang mit MS-DOS 5.0-7. MPDOSTIP (bằng tiếng Đức). Lưu trữ bản gốc ngày 22 tháng 8 năm 2017. Truy cập ngày 25 tháng 10 năm 2013. (NB. MSDOSTIP.TXT is part of MPDOSTIP.ZIP, maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the MSDOSTIP.TXT file.)