การเปลี่ยนเส้นทางของข้อความแสดงข้อผิดพลาดจากพรอมท์คำสั่ง: STDERR/STDOUT

สรุป

เมื่อเปลี่ยนเส้นทางของการแสดงผลจากแอปพลิเคชันโดยใช้สัญลักษณ์ ">" ข้อความแสดงข้อผิดพลาดยังคงพิมพ์ไปยังหน้าจอ เหตุผลเนื่องจากข้อความแสดงข้อผิดพลาดมักถูกส่งไปยังสตรีมค่าคลาดเคลื่อนมาตรฐานแทนที่จะส่งไปยังสตรีม Standard Out


การแสดงผลจากแอปพลิเคชันคอนโซล (พรอมท์คำสั่ง) หรือคำสั่งมักจะถูกส่งไปยังสตรีมที่แยกต่างหากสองสตรีม การแสดงผลปกติจะถูกส่งไปยัง Standard Out (STDOUT) และข้อความแสดงข้อผิดพลาดจะถูกส่งไปยังสตรีมค่าคลาดเคลื่อนมาตรฐาน (STDERR) เมื่อคุณเปลี่ยนเส้นทางของการแสดงผลคอนโซลโดยใช้สัญลักษณ์ ">" คุณจะเปลี่ยนเส้นทาง STDOUT เท่านั้น เมื่อต้องการเปลี่ยนเส้นทางไปยัง STDERR คุณต้องระบุ "2>" ให้เป็นสัญลักษณ์การเปลี่ยนเส้นทาง ซึ่งจะเป็นการเลือกกระแสข้อมูลขาออกที่สองซึ่งก็คือ STDERR

ตัวอย่าง

คำสั่ง "dir file.xxx" (โดยที่ file.xxx ไม่มีอยู่) จะแสดงผลดังต่อไปนี้:
ไดรฟ์ข้อมูลในไดรฟ์ F คือ Candy Cane หมายเลขผลิตภัณฑ์ของไดรฟ์ข้อมูลคือ 34EC 0876


ไม่พบแฟ้ม
หากคุณเปลี่ยนเส้นทางการแสดงผลไปยังอุปกรณ์ NUL โดยใช้ "dir file.xxx > nul" คุณจะยังคงเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้
ไม่พบแฟ้ม
เมื่อต้องการเปลี่ยนเส้นทางข้อความแสดงข้อผิดพลาดการเป็น NUL ใช้คำสั่งต่อไปนี้:
   dir file.xxx 2> nul
หรือคุณสามารถเปลี่ยนเส้นทางการแสดงผลไปยังตำแหน่งที่ตั้งหนึ่ง และข้อผิดพลาดไปยังอีกตำแหน่งที่ตั้งหนึ่ง
   dir file.xxx > output.msg 2> output.err
คุณสามารถพิมพ์ข้อผิดพลาดและการแสดงผลมาตรฐานไปยังแฟ้มเดียวได้โดยใช้คำสั่ง "&1" เพื่อเปลี่ยนเส้นทางการแสดงผลสำหรับ STDERR ไปเป็น STDOUT จากนั้นส่งการแสดงผลจาก STDOUT ไปยังแฟ้ม:

   dir file.xxx 1> output.msg 2>&1
คุณสมบัติ

รหัสบทความ: 110930 - การตรวจสอบครั้งสุดท้าย: 30 ส.ค. 2013 - ฉบับแก้ไข: 1

คำติชม