COMMAND.COM
![]() | |
Phát triển bởi | Seattle Computer Products, Microsoft, IBM, Novell, Caldera UK |
---|---|
Hệ điều hành | |
Nền tảng | 16-bit X86 |
Thể loại | trình thông dịch dòng lệnh |
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
[sửa | sửa mã nguồn]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ộ
[sửa | sửa mã nguồn]
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.
- 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ý.[1]
- 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
[sửa | sửa mã nguồn]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
[sửa | sửa mã nguồn]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ố
[sửa | sửa mã nguồn]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 đó.
- 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,[1][2][7] một tính năng được tìm thấy trong 4DOS 3.00 trở lên[8] cũng như trong Multiuser DOS,[1] 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
[sửa | sửa mã nguồn]![](http://upload.wikimedia.org/wikipedia/commons/b/b6/StartingMsdos.png)
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ế
[sửa | sửa mã nguồn]Độ 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
[sửa | sửa mã nguồ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]
Xem thêm
[sửa | sửa mã nguồn]Tham khảo
[sửa | sửa mã nguồn]- ^ a b c d e f g h Paul, Matthias (ngày 30 tháng 7 năm 1997). NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds (e-book). MPDOSTIP (bằng tiếng Đức) . Lưu trữ bản gốc ngày 4 tháng 11 năm 2016. Truy cập ngày 6 tháng 8 năm 2014. (NB.
NWDOSTIP.TXT
is part ofMPDOSTIP.ZIP
, maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of theNWDOSTIP.TXT
file.) - ^ a b “Chapter 7: Batch Processing”. DR-DOS 7.02 User Guide. Caldera, Inc. 1998. Lưu trữ bản gốc ngày 11 tháng 9 năm 2017. Truy cập ngày 11 tháng 9 năm 2017.
- ^ 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.)
- ^ Auer, Eric; Paul, Matthias; Hall, Jim (ngày 24 tháng 12 năm 2015) [2003-12-31]. “MS-DOS errorlevels”. Bản gốc lưu trữ ngày 24 tháng 12 năm 2015.
- ^ Paul, Matthias (2003) [1997]. Auer, Eric (biên tập). “Exitcodes (errorlevels) of DOS utilities”. Bản gốc lưu trữ ngày 11 tháng 9 năm 2017. Truy cập ngày 11 tháng 9 năm 2017. [1]
- ^ Allen, William; Allen, Linda. “Windows 95/98/ME ERRORLEVELs”. Bản gốc lưu trữ ngày 29 tháng 10 năm 2005.
- ^ DR-DOS 7.02 User Guide. Caldera, Inc. 1998. Lưu trữ bản gốc ngày 4 tháng 11 năm 2016. Truy cập ngày 10 tháng 8 năm 2013.
- ^ a b c Brothers, 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.)
- ^ “COMMAND.COM”. Bản gốc lưu trữ ngày 18 tháng 2 năm 2006.