เปลี่ยนเส้นทางเอาต์พุตจากบรรทัดคำสั่งของ Windows ไปยังไฟล์ข้อความ
วิธีหนึ่งที่มีประโยชน์ที่สุดในการบันทึกและแก้ไขปัญหาการทำงานของคำสั่งหรือชุดงานที่คุณเรียกใช้บนWindowsคือการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์
อย่างไรก็ตาม คุณสามารถเปลี่ยนเส้นทางการเขียนบรรทัดคำสั่งไปยังไฟล์ได้หลายวิธี ตัวเลือกที่คุณเลือกขึ้นอยู่กับว่าคุณต้องการดูผลลัพธ์ของคำสั่งอย่างไร
วิธีการทำงานของเอาต์พุตพรอมต์คำสั่งของ Windows(How Windows Command Prompt Output Works)
เมื่อคุณพิมพ์คำสั่งในคอนโซลWindows ( command prompt ) เอาต์พุตจากคำสั่งนั้นจะไปที่สตรีมแยกกันสองสตรีม
- STDOUT : Standard Outคือที่ที่การตอบสนองมาตรฐานจากคำสั่งต่างๆ จะไป ตัวอย่างเช่น การตอบสนองมาตรฐานสำหรับ คำสั่ง DIRคือรายการไฟล์ภายในไดเร็กทอรี
- STDERR : Standard Errorคือที่ที่ข้อความแสดงข้อผิดพลาดจะไปหากมีปัญหากับคำสั่ง ตัวอย่างเช่น หากไม่มีไฟล์ในไดเร็กทอรีคำสั่งDIR จะส่งออก " ไม่พบไฟล์(File) " ไปยัง สตรีมข้อผิดพลาดมาตรฐาน(Standard Error)
คุณสามารถเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ในWindowsสำหรับเอาต์พุตสตรีมทั้งสองนี้ได้
เปลี่ยนเส้นทางเอาต์พุตมาตรฐานเขียนไปยังไฟล์ใหม่(Redirect Standard Output Write to New File)
มีสองวิธีที่คุณสามารถเปลี่ยนเส้นทางเอาต์พุตมาตรฐานของคำสั่งไปยังไฟล์ได้ อย่างแรกคือการส่งเอาต์พุตคำสั่งเขียนไปยังไฟล์ใหม่ทุกครั้งที่คุณเรียกใช้คำสั่ง
ในการดำเนินการนี้ ให้เปิดพรอมต์คำสั่งแล้วพิมพ์:
dir test.exe > myoutput.txt
อักขระ > บอกให้คอนโซลส่งออกSTDOUTไปยังไฟล์ด้วยชื่อที่คุณระบุ
เมื่อคุณเรียกใช้คำสั่งนี้(run this command)คุณจะสังเกตเห็นว่าไม่มีการตอบสนองใดๆ ในหน้าต่างคำสั่ง ยกเว้นข้อผิดพลาดที่ไฟล์นั้นไม่มีอยู่
เนื่องจากเอาต์พุตมาตรฐานสำหรับคำสั่งถูกเปลี่ยนเส้นทางไปยังไฟล์ชื่อ myoutput.txt ไฟล์นี้อยู่ในไดเร็กทอรีเดียวกันกับที่คุณรันคำสั่ง เอาต์พุตข้อผิดพลาดมาตรฐานยังคงแสดงตามปกติ
หมายเหตุ(Note) : โปรดใช้ความระมัดระวังในการเปลี่ยนไดเร็กทอรีแอ็คทีฟ(change the active directory)สำหรับพรอมต์คำสั่งก่อนที่จะรันคำสั่ง วิธีนี้คุณจะรู้ว่าไฟล์เอาต์พุตถูกเก็บไว้ที่ใด
คุณสามารถดูเอาต์พุตมาตรฐานที่ไปยังไฟล์ได้โดยพิมพ์ "myoutput.txt" ในหน้าต่างคำสั่ง การดำเนินการนี้จะเปิดไฟล์ข้อความในโปรแกรมดูไฟล์ข้อความเริ่มต้นของคุณ สำหรับคนส่วนใหญ่ ไฟล์นี้มักจะเป็นNotepad.exe
ครั้งต่อไปที่คุณเรียกใช้คำสั่งเดียวกัน ไฟล์เอาต์พุตก่อนหน้าจะถูกลบออก ไฟล์เอาท์พุตใหม่จะถูกสร้างขึ้นใหม่ด้วยเอาต์พุตของคำสั่งล่าสุด
เปลี่ยนเส้นทางเอาต์พุตมาตรฐาน(Standard Output)เขียนไปยังไฟล์เดียวกัน(Same File)
จะทำอย่างไรถ้าคุณไม่ต้องการที่จะเขียนทับไฟล์เดียวกัน อีกทางเลือกหนึ่งคือใช้ >> แทน > เพื่อเปลี่ยนเส้นทางไปยังไฟล์เอาต์พุต ในกรณีของตัวอย่างนี้ คุณจะต้องพิมพ์:
dir test.exe >> myoutput.txt
คุณจะเห็นผลลัพธ์เดียวกัน (ข้อผิดพลาดเท่านั้น)
แต่ในกรณีนี้ แทนที่จะเขียนทับไฟล์เอาต์พุต คำสั่งนี้จะผนวกเอาต์พุตใหม่เข้ากับไฟล์เอาต์พุตที่มีอยู่
ทุกครั้งที่คุณเรียกใช้คำสั่งและเพิ่มเอาต์พุตไปยังไฟล์ มันจะเขียนเอาต์พุตมาตรฐานใหม่ไปที่ส่วนท้ายของไฟล์ที่มีอยู่
เปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานไปยังไฟล์(Redirect Standard Error To a File)
เช่นเดียวกับที่คุณสามารถเปลี่ยนเส้นทางการเขียนเอาต์พุตมาตรฐานไปยังไฟล์ คุณยังสามารถส่งออกสตรีมข้อผิดพลาดมาตรฐานไปยังไฟล์ได้อีกด้วย
ในการดำเนินการนี้ คุณจะต้องเพิ่ม2>ต่อท้ายคำสั่ง ตามด้วยไฟล์แสดงข้อผิดพลาดเอาต์พุตที่คุณต้องการสร้าง
ในตัวอย่างนี้ คุณจะต้องพิมพ์คำสั่ง:
dir test.exe > myoutput.txt 2> output.err
สิ่งนี้จะส่งสตรีมเอาต์พุตมาตรฐานไปที่ myoutput.txt และสตรีมข้อผิดพลาดมาตรฐานไปที่ output.err ผลลัพธ์คือไม่มีเอาต์พุตสตรีมเลยแสดงในหน้าต่างคอนโซล
อย่างไรก็ตาม คุณสามารถดูข้อความแสดงข้อผิดพลาดได้โดยพิมพ์output.err การดำเนินการนี้จะเปิดไฟล์ในตัวแสดงไฟล์ข้อความเริ่มต้นของคุณ
อย่างที่คุณเห็น ข้อความแสดงข้อผิดพลาดจากคำสั่งจะถูกส่งออกไปยังไฟล์ข้อผิดพลาด เช่น(Just)เดียวกับเอาต์พุตมาตรฐาน คุณสามารถใช้>>แทนเพื่อผนวกข้อผิดพลาดเข้ากับข้อผิดพลาดจากคำสั่งที่เรียกใช้ก่อนหน้านี้
เปลี่ยนเส้นทางการเขียนเอาต์พุตทั้งหมดไปยังไฟล์เดียวกัน(Redirect All Output Writes to a Same File)
วิธีการทั้งหมดข้างต้นส่งผลให้เกิดไฟล์หลายไฟล์ ไฟล์หนึ่งใช้สำหรับสตรีมเอาต์พุตมาตรฐานและอีกไฟล์สำหรับสตรีมข้อผิดพลาดมาตรฐาน
หากคุณต้องการรวมเอาท์พุตทั้งสองนี้ไว้ในไฟล์เดียวกัน คุณก็สามารถทำได้เช่นกัน ในการดำเนินการนี้ คุณเพียงแค่เปลี่ยนเส้นทางเอาต์พุตทั้งหมดไปยังไฟล์เดียวกันโดยใช้คำสั่งต่อไปนี้
dir test.exe 1> myoutput.txt 2>&1
นี่คือวิธีการทำงานของคำสั่งนี้:
- เอาต์พุตมาตรฐานจะถูกส่งไปยังไฟล์เอาต์พุตที่ระบุโดยเอาต์พุตหมายเลข 1
- เอาต์พุตข้อผิดพลาดมาตรฐานที่ระบุโดยหมายเลข 2 ถูกเปลี่ยนเส้นทางไปยังไฟล์เอาต์พุตที่ระบุโดยหมายเลข 1
สิ่งนี้จะเพิ่มเอาต์พุตข้อผิดพลาดต่อท้ายเอาต์พุตมาตรฐาน
นี่เป็นวิธีที่มีประโยชน์ในการดูผลลัพธ์ทั้งหมดสำหรับคำสั่งใดๆ ในไฟล์เดียว
การปิดเสียงสตรีมเอาต์พุตมาตรฐานหรือข้อผิดพลาด(Silencing Standard or Error Output Streams)
คุณยังสามารถปิดเอาต์พุต(Standard Output) มาตรฐาน หรือข้อผิดพลาดมาตรฐาน(Standard Error)โดยเปลี่ยนเส้นทางเอาต์พุตไปยังNULแทนไฟล์
จากตัวอย่างข้างต้น หากคุณต้องการเพียงเอาต์พุตมาตรฐาน(Standard Output)และไม่มีข้อผิดพลาดมาตรฐาน(Standard Error)เลย คุณสามารถใช้คำสั่งต่อไปนี้:
dir test.exe 1> myoutput.txt 2>nul
ซึ่งจะส่งผลให้ไฟล์เอาต์พุตเดียวกันกับตัวอย่างแรกด้านบนที่คุณเปลี่ยนเส้นทางStandard Outputเท่านั้น แต่ด้วยคำสั่งนี้ ข้อผิดพลาดจะไม่สะท้อนภายในคอนโซล มันจะไม่สร้างไฟล์บันทึกข้อผิดพลาดเช่นกัน
สิ่งนี้มีประโยชน์หากคุณไม่สนใจข้อผิดพลาดใดๆ และไม่ต้องการให้กลายเป็นสิ่งรบกวน
คุณสามารถดำเนินการคำสั่งเอาต์พุตเดียวกันด้านบนจากภายในไฟล์ BAT(inside a BAT file)และเอาต์พุตจากบรรทัดนั้นจะไปที่ไฟล์เอาต์พุตที่คุณระบุ นี่เป็นวิธีที่มีประโยชน์ในการดูว่าคำสั่งใน ไฟล์ BATมีข้อผิดพลาดหรือไม่เมื่อพยายามเรียกใช้
Related posts
บันทึกรายการกระบวนการที่ทำงานอยู่ในไฟล์ข้อความใน Windows
วิธีใช้คำสั่ง Taskkill ใน Windows 10/11
วิธีลบข้อความออกจากไอคอนในทาสก์บาร์ของ Windows
ป้องกันการเข้าถึงพรอมต์คำสั่งใน Windows
ลบป้ายข้อความออกจากไอคอนเดสก์ท็อปใน Windows 7/8/10
วิธีพิมพ์ข้อความจาก Android
วิธีทำให้แอพหรือเกมเต็มหน้าจอใน Windows
วิธีแก้ไขข้อผิดพลาดหน้าจอสีน้ำเงิน Stop:0x000000F4 ใน Windows
วิธีการแสดงรายการ Windows Services ทั้งหมดโดยใช้ PowerShell หรือ Command Line
วิธีการเปิด Microsoft Store apps จาก Command Prompt
วิธีย้ายโปรไฟล์และอีเมลธันเดอร์เบิร์ดของคุณไปยังคอมพิวเตอร์ Windows เครื่องใหม่
วิธีปรับขนาด Video โดยใช้ Command-line ด้วย FFmpeg ใน Windows 10
วิธีบอกรุ่นของ Windows ที่คุณติดตั้งไว้
ส่งออก ล้าง และเพิ่มขนาดสำหรับบันทึกเหตุการณ์ใน Windows
Outlook Command Line Switches บน Windows 10
Swiss File Knife เป็นประโยชน์ Command Line tool ที่มีประโยชน์สำหรับ Windows
วิธีการตั้งค่าและใช้งานเบราว์เซอร์ Sandbox บน Windows
ถอนการติดตั้งและติดตั้ง IE ใหม่ใน Windows 7
วิธีทำให้พีซี Windows ของคุณตื่นโดยไม่ต้องสัมผัสเมาส์
ใช้ Netstat เพื่อดู Listening Ports และ PID ใน Windows