COMMAND.COM

**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  đượ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  hoặc .
; CHCP: Hiển thị hoặc thay đổi trang mã hệ thống hiện tại.
; CHDIR, CD: Thay đổi thư mục làm việc hiện tại hoặc hiển thị thư mục hiện tại.
; CLS: Xóa màn hình.
; COPY: 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.
; DATE: Hiển thị và thiết lập ngày của hệ thống.
; DEL hoặc ERASE: 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 đó.
; DIR: Liệt kê các tệp trong thư mục được chỉ định.
; ECHO: Chuyển đổi cho dù văn bản được hiển thị (ECHO ON) hoặc không (ECHO OFF). Cũng hiển thị văn bản trên màn hình (ECHO text).
; EXIT: Thoát khỏi COMMAND.COM và trở về chương trình đã khởi chạy nó.
; LFNFOR: Bật hoặc tắt trả về tên tệp dài bằng lệnh tên tệp dài bằng lệnh FOR. (Windows 9x).
; LOADHIGH, LH: Tải chương trình vào bộ nhớ cao (HILOAD trong DR DOS).
; LOCK: Cho phép các chương trình bên ngoài thực hiện quyền truy cập đĩa cấp thấp cho một ổ đĩa. (Chỉ dành cho hệ điều hành DOS 7.1 và Windows 9x)
; MKDIR, MD: Tạo một thư mục mới.
; PATH: Hiển thị hoặc thay đổi giá trị của biến môi trường PATH kiểm soát những nơi COMMAND.COM sẽ tìm kiếm các tệp thi hành.
; PROMPT: Hiển thị hoặc thay đổi giá trị của biến môi trường PROMPT kiểm soát sự xuất hiện của dấu nhắc.
; REN, RENAME: Đổi tên tệp hoặc thư mục.
; RMDIR: Xóa một thư mục trống.
; SET: Đặt giá trị của biến môi trường; không có đối số, hiển thị tất cả các biến môi trường được xác định.
; TIME: Hiển thị và đặt thời gian của hệ thống.
; TRUENAME: Hiển thị tên vật lý được mở rộng hoàn toàn của một tệp, giải quyết ánh xạ hệ thống tệp ASSIGN, JOIN và SUBST hợp lý.
; TYPE: Hiển thị nội dung của một tệp trên bảng điều khiển.
; UNLOCK: Tắt truy cập đĩa cấp thấp. (Chỉ dành cho hệ điều hành DOS 7.1 và Windows 9x)
; VER: Hiển thị phiên bản của hệ điều hành.
; VERIFY: Bật hoặc tắt xác minh ghi cho tệp.
; VOL: Hiển thị thông tin về một ổ đĩa.

## Các lệnh trong Batch file
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.

; *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)..

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.
* 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 đó.
* Với Novell DOS 7, OpenDOS 7.01, DR-DOS 7.02 và cao hơn, COMMAND.COM cũng hỗ trợ một số biến thông tin hệ thống, một tính năng được tìm thấy trong 4DOS 3.00 trở lên cũng như trong Multiuser DOS, mặc dù hầu hết các tên biến được hỗ trợ khác nhau.

## Chuyển hướng, đường ống và chuỗi

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 ) được thực hiện theo thứ tự (chuỗi các lệnh). Nói cách khác, command1 được thực hiện cho đến khi kết thúc, sau đó đến command2. Đâ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. 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ệ. 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à ^. 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. (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ự.

## 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.

## Xem thêm
* SHELL (lệnh CONFIG.SYS)
* %COMSPEC%
* %CMDLINE%
* Danh sách các lệnh DOS
* So sánh các nhân máy tính

## Tham khảo

## Tham khảo