เพราะข้อความผิดพลาดที่มักจะไปไม่ได้stderr
stdout
เปลี่ยนคำเรียกร้องเป็น:
taskkill /im "test.exe" /f >nul 2>&1
และทั้งหมดจะดีขึ้น
ใช้งานได้เนื่องจากstdout
เป็น file descriptor 1 และstderr
เป็น file descriptor 2 ตามแบบแผน (0 คือstdin
โดยบังเอิญ) 2>&1
สำเนาไฟล์เอาต์พุต descriptor 2 จากค่าใหม่ของ 1 ซึ่งเพิ่งเปลี่ยนเส้นทางไปยังอุปกรณ์ null
ไวยากรณ์นี้ (แบบหลวม ๆ ) ยืมมาจาก Unix เชลล์จำนวนมาก แต่คุณต้องระวังเนื่องจากมีความแตกต่างเล็กน้อยระหว่างไวยากรณ์ของเชลล์และ CMD.EXE
อัปเดต:ฉันรู้ว่า OP เข้าใจลักษณะพิเศษของ "ไฟล์" ที่ชื่อNUL
ฉันเขียนถึงที่นี่ แต่ผู้แสดงความคิดเห็นไม่ได้แจ้งรายละเอียดเพิ่มเติมเล็กน้อยเกี่ยวกับแง่มุมนั้นให้ฉันฟัง
เมื่อย้อนกลับไปที่ MSDOS รุ่นแรกสุดชื่อไฟล์บางไฟล์จะถูกยึดไว้ล่วงหน้าโดยเคอร์เนลระบบไฟล์และใช้เพื่ออ้างถึงอุปกรณ์ รายการแรกของชื่อเหล่านั้นรวมNUL
, PRN
, CON
, AUX
และผ่านCOM1
เป็นอุปกรณ์ว่าง สามารถเปิดได้ตลอดเวลาสำหรับการอ่านหรือการเขียนสามารถเขียนจำนวนเท่าใดก็ได้และอ่านได้เสมอ แต่ไม่ส่งคืนข้อมูล อื่น ๆ รวมถึงพอร์ตเครื่องพิมพ์ขนานคอนโซลและพอร์ตอนุกรมสูงสุดสี่พอร์ต ตั้งแต่ MSDOS 5 มีชื่อที่สงวนไว้อีกหลายชื่อ แต่อนุสัญญาพื้นฐานได้รับการยอมรับเป็นอย่างดีCOM4
NUL
เมื่อ Windows ถูกสร้างขึ้นมันเริ่มต้นชีวิตด้วยเลเยอร์การสลับแอปพลิเคชันที่ค่อนข้างบางที่ด้านบนของเคอร์เนล MSDOS ดังนั้นจึงมีข้อ จำกัด ชื่อไฟล์เหมือนกัน เมื่อ Windows NT ถูกสร้างขึ้นเป็นระบบปฏิบัติการที่แท้จริงในสิทธิ์ของตัวเองชื่อที่เหมือนNUL
และCOM1
ถูกสันนิษฐานอย่างกว้างขวางเกินไปว่าจะทำงานเพื่ออนุญาตให้ลบออกได้ อย่างไรก็ตามความคิดที่ว่าอุปกรณ์ใหม่มักจะได้รับชื่อที่จะบล็อกผู้ใช้ในอนาคตของชื่อเหล่านั้นสำหรับไฟล์จริงนั้นไม่สมเหตุสมผล
Windows NT และทุกเวอร์ชันที่ตามมา (2K, XP, 7 และตอนนี้ 8) ทั้งหมดตามมาใช้Namespace NT ที่ซับซ้อนมากขึ้นจากรหัสเคอร์เนลและเพื่อสร้างรหัสพื้นที่ผู้ใช้อย่างระมัดระวังและไม่พกพาได้สูง ในพื้นที่ชื่อนั้นไดรเวอร์อุปกรณ์จะมองเห็นได้ผ่าน\Device
โฟลเดอร์ เพื่อรองรับความเข้ากันได้แบบย้อนหลังที่จำเป็นมีกลไกพิเศษโดยใช้\DosDevices
โฟลเดอร์ที่ใช้รายชื่อไฟล์ที่สงวนไว้ในโฟลเดอร์ระบบไฟล์ใด ๆ รหัสผู้ใช้สามารถเรียกดูพื้นที่ชื่อภายในนี้โดยใช้ชั้น API ที่อยู่ด้านล่าง Win32 API ปกติ เครื่องมือที่ดีในการสำรวจเนมสเปซเคอร์เนลคือWinObjจากกลุ่ม SysInternals ที่ Microsoft
สำหรับคำอธิบายที่สมบูรณ์ของกฎเกี่ยวกับชื่อทางกฎหมายของไฟล์ (และอุปกรณ์) ใน Windows หน้านี้ที่ MSDNจะให้ข้อมูลและน่ากลัว กฎระเบียบที่มีจำนวนมากที่มีความซับซ้อนมากขึ้นกว่าที่พวกเขาควรจะเป็นและมันก็เป็นจริงเป็นไปไม่ได้ที่จะตอบคำถามง่ายๆเช่น "นานแค่ไหนเป็นกฎหมายชื่อเส้นทางที่ยาวที่สุดที่มีคุณสมบัติครบถ้วน?"