Một trong những cách hữu ích nhất để ghi nhật ký và khắc phục sự cố hoạt động của các lệnh hoặc công việc hàng loạt mà bạn chạy trên Windows là chuyển hướng đầu ra đến một tệp.
Tuy nhiên, có một số cách khác nhau để bạn có thể chuyển hướng ghi dòng lệnh vào tệp. Tùy chọn bạn chọn phụ thuộc vào cách bạn muốn xem đầu ra lệnh của mình.
Cách hoạt động của đầu ra dấu nhắc lệnh của Windows
Khi bạn nhập một lệnh trong bảng điều khiển Windows (dấu nhắc lệnh), đầu ra từ lệnh đó sẽ chuyển đến hai luồng riêng biệt.
- GIỚI THIỆU :Standard Out là nơi thực hiện bất kỳ phản hồi tiêu chuẩn nào từ các lệnh. Ví dụ:phản hồi tiêu chuẩn cho lệnh DIR là một danh sách các tệp bên trong một thư mục.
- STDERR :Lỗi tiêu chuẩn là nơi xuất hiện bất kỳ thông báo lỗi nào nếu có vấn đề với lệnh. Ví dụ:nếu không có bất kỳ tệp nào trong thư mục, lệnh DIR sẽ xuất “Không tìm thấy tệp” sang luồng Lỗi chuẩn.
Bạn có thể chuyển hướng đầu ra đến một tệp trong Windows cho cả hai luồng đầu ra này.
Chuyển hướng ghi đầu ra chuẩn vào tệp mới
Có hai cách bạn có thể chuyển hướng đầu ra tiêu chuẩn của một lệnh thành một tệp. Đầu tiên là gửi ghi đầu ra lệnh vào một tệp mới mỗi khi bạn chạy lệnh.
Để thực hiện việc này, hãy mở dấu nhắc lệnh và nhập:
dir test.exe > myoutput.txt
Ký tự> yêu cầu bảng điều khiển xuất ra STDOUT vào tệp có tên bạn đã cung cấp.
Khi bạn chạy lệnh này, bạn sẽ nhận thấy rằng không có bất kỳ phản hồi nào trong cửa sổ lệnh ngoại trừ lỗi tệp không tồn tại.
Điều này là do đầu ra tiêu chuẩn cho lệnh đã được chuyển hướng đến một tệp có tên myoutput.txt. Tệp hiện tồn tại trong cùng một thư mục mà bạn đã chạy lệnh. Đầu ra lỗi tiêu chuẩn vẫn hiển thị như bình thường.
Lưu ý :Hãy cẩn thận thay đổi thư mục hoạt động cho dấu nhắc lệnh trước khi chạy lệnh. Bằng cách này, bạn sẽ biết nơi lưu trữ các tệp đầu ra.
Bạn có thể xem đầu ra tiêu chuẩn của tệp bằng cách nhập “myoutput.txt” vào cửa sổ lệnh. Thao tác này sẽ mở tệp văn bản trong trình xem tệp văn bản mặc định của bạn. Đối với hầu hết mọi người, đây thường là Notepad.exe.
Lần sau khi bạn chạy lệnh tương tự, tệp đầu ra trước đó sẽ bị xóa. Tệp đầu ra mới sẽ được tạo lại bằng đầu ra của lệnh mới nhất.
Chuyển hướng đầu ra chuẩn được ghi vào cùng một tệp
Điều gì xảy ra nếu bạn không muốn ghi đè lên cùng một tệp? Một tùy chọn khác là sử dụng>> thay vì> để chuyển hướng đến tệp đầu ra. Trong trường hợp của ví dụ này, bạn sẽ nhập:
dir test.exe >> myoutput.txt
Bạn sẽ thấy cùng một đầu ra (chỉ lỗi).
Nhưng trong trường hợp này, thay vì ghi đè tệp đầu ra, lệnh này sẽ nối đầu ra mới vào tệp đầu ra hiện có.
Mỗi khi bạn chạy một lệnh và nối đầu ra vào một tệp, nó sẽ ghi đầu ra chuẩn mới vào cuối tệp hiện có.
Lỗi chuẩn chuyển hướng sang tệp
Tương tự như cách bạn có thể chuyển hướng ghi đầu ra tiêu chuẩn vào tệp, bạn cũng có thể xuất luồng lỗi tiêu chuẩn vào tệp.
Để thực hiện việc này, bạn cần thêm 2> ở cuối lệnh, theo sau là tệp lỗi đầu ra bạn muốn tạo.
Trong ví dụ này, bạn sẽ nhập lệnh:
dir test.exe > myoutput.txt 2> output.err
Điều này sẽ gửi luồng đầu ra tiêu chuẩn đến myoutput.txt và luồng lỗi tiêu chuẩn đến output.err. Kết quả là không có luồng đầu ra nào được hiển thị trong cửa sổ bảng điều khiển.
Tuy nhiên, bạn có thể thấy thông báo lỗi bằng cách nhập output.err . Thao tác này sẽ mở tệp trong trình xem tệp văn bản mặc định của bạn.
Như bạn có thể thấy, bất kỳ thông báo lỗi nào từ lệnh đều được xuất ra tệp lỗi. Cũng như với đầu ra tiêu chuẩn, bạn có thể sử dụng >> thay vào đó để thêm lỗi vào các lỗi từ các lệnh đã chạy trước đó.
Chuyển hướng tất cả đầu ra được ghi đến cùng một tệp
Tất cả các phương pháp trên đều dẫn đến nhiều tệp. Một tệp dành cho luồng đầu ra tiêu chuẩn và tệp kia dành cho luồng lỗi tiêu chuẩn.
Nếu bạn muốn bao gồm cả hai kết quả đầu ra này vào cùng một tệp, bạn cũng có thể làm điều đó. Để làm điều này, bạn chỉ cần chuyển hướng tất cả đầu ra đến cùng một tệp bằng lệnh sau.
dir test.exe 1> myoutput.txt 2>&1
Đây là cách lệnh này hoạt động:
- Đầu ra tiêu chuẩn được chuyển hướng đến tệp đầu ra được xác định bởi đầu ra số 1.
- Đầu ra lỗi tiêu chuẩn được xác định bởi số 2 được chuyển hướng đến tệp đầu ra được xác định bởi số 1.
Điều này sẽ nối đầu ra lỗi vào cuối đầu ra chuẩn.
Đây là một cách hữu ích để xem tất cả đầu ra cho bất kỳ lệnh nào trong một tệp.
Tắt tiếng Luồng đầu ra chuẩn hoặc lỗi
Bạn cũng có thể tắt Đầu ra Chuẩn hoặc Lỗi Chuẩn bằng cách chuyển hướng đầu ra thành NUL thay vì tệp.
Sử dụng ví dụ trên, nếu bạn chỉ muốn Đầu ra Chuẩn và không có Lỗi Chuẩn nào cả, bạn có thể sử dụng lệnh sau:
dir test.exe 1> myoutput.txt 2>nul
Điều này sẽ dẫn đến tệp đầu ra giống như ví dụ đầu tiên ở trên, trong đó bạn chỉ chuyển hướng Đầu ra chuẩn, nhưng với lệnh này, lỗi sẽ không xảy ra bên trong bảng điều khiển. Nó cũng sẽ không tạo ra một tệp nhật ký lỗi.
Điều này rất hữu ích nếu bạn không quan tâm đến bất kỳ lỗi nào và không muốn chúng trở thành mối phiền toái.
Bạn có thể thực hiện bất kỳ lệnh đầu ra nào tương tự ở trên từ bên trong tệp BAT và đầu ra từ dòng đó sẽ chuyển đến tệp đầu ra mà bạn chỉ định. Đây là một cách hữu ích để xem liệu bất kỳ lệnh nào trong tệp BAT có bất kỳ lỗi nào khi chúng cố gắng chạy hay không.