CMD vs BAT
CMD và BAT là các tệp được sử dụng để tự động hóa một số tác vụ lặp đi lặp lại và được người dùng sử dụng thường xuyên. Tạo tệp CMD hoặc BAT giống như sử dụng ngôn ngữ lập trình đơn giản với lợi thế là khả năng sử dụng các lệnh dòng lệnh và để thực thi các ứng dụng khác có hoặc không có tham số. Các tệp CMD và BAT rất giống nhau với sự khác biệt rất nhỏ. BAT là một loại tệp rất cũ đã xuất hiện kể từ khi DOS ra đời. Nó đã được Microsoft mang đi khi phát triển Windows khỏi DOS. Loại tệp CMD được Microsoft phát triển để sử dụng cho việc triển khai các tập lệnh của Windows NT nhưng cũng được sử dụng bởi các phiên bản Windows mới hơn dựa trên Windows NT.
BAT được tạo ra để tương tác với HOL.COM, trình thông dịch lệnh của DOS. Microsoft đã áp dụng hầu hết các lệnh DOS vào trình thông dịch mới có tên là CMD. EXE. CMD được tạo để giao diện với CMD.EXE và nó phá vỡ tính tương thích với HOL.COM. Một điểm khác biệt chính là cách họ xử lý biến errorlevel. Khi sử dụng BAT, biến này chỉ được thay đổi khi xảy ra lỗi thực tế và không có thay đổi trạng thái xảy ra khi mỗi lệnh thực thi thành công. Điều này không đúng với CMD vì biến errorlevel vẫn sẽ thay đổi trạng thái ngay cả khi không có lỗi xảy ra. Các lập trình viên cần lưu ý điều này khi tạo các kịch bản phức tạp vì nó có thể gây ra một chút nhầm lẫn.
Ngoài những khác biệt nhỏ đó, CMD và BAT giống hệt nhau. Hầu hết người dùng tạo tập lệnh đơn giản để xóa hoặc chuyển tệp xung quanh sẽ không gặp phải bất kỳ vấn đề nào. Đối với người dùng các phiên bản Windows mới hơn, BAT và CMD có thể hoán đổi cho nhau khá nhiều vì CMD.EXE sẽ diễn giải và thực thi các lệnh trong cả hai tệp. Mặc dù hầu hết người dùng nhận thức được thực tế này, rất nhiều người lớn tuổi có cơ hội làm việc với DOS và các tệp bó của nó vẫn sử dụng tiện ích mở rộng BAT; chỉ đơn giản là thói quen và sự quen thuộc.
Tóm lược:
1. Tiện ích mở rộng BAT được sử dụng bởi DOS và Windows trong khi tiện ích mở rộng CMD dành cho Windows NT Script Script
2. Tiện ích mở rộng BAT có thể được hiểu bởi HOL.COM và CMD.EXE trong khi tiện ích mở rộng CMD chỉ có thể được hiểu bởi CMD.EXE
3. Errorlevel luôn thay đổi trạng thái trong CMD nhưng chỉ xảy ra lỗi trong BAT