क्योंकि त्रुटि संदेश अक्सर stderr
नहीं जाते हैं stdout
।
इसको मंगलाचरण बदलें:
taskkill /im "test.exe" /f >nul 2>&1
और सब बेहतर होगा
वह काम करता है क्योंकि stdout
फ़ाइल डिस्क्रिप्टर 1 है, और stderr
कन्वेंशन द्वारा फ़ाइल डिस्क्रिप्टर 2 है। (0 stdin
, संयोग से है।) 2>&1
कॉप्स आउटपुट फ़ाइल डिस्क्रिप्टर 2 को 1 के नए मूल्य से, जो कि केवल नल डिवाइस पर रीडायरेक्ट किया गया था।
यह सिंटैक्स कई यूनिक्स शेल से उधार लिया गया (शिथिल) है, लेकिन आपको सावधान रहना होगा क्योंकि शेल सिंटैक्स और CMD.EXE के बीच सूक्ष्म अंतर हैं।
अद्यतन: मुझे पता है कि ओपी "फ़ाइल" की विशेष प्रकृति को समझता है जिसका नाम NUL
मैं यहां लिख रहा हूं, लेकिन एक टिप्पणीकार ने ऐसा नहीं किया और इसलिए मुझे उस पहलू पर थोड़ा और विस्तार से बताने की अनुमति देता हूं।
MSDOS के शुरुआती रिलीज़ पर वापस जाने से, कुछ फ़ाइल नामों को फ़ाइल सिस्टम कर्नेल द्वारा प्रीपेप्ट किया गया और डिवाइसों को संदर्भित करने के लिए उपयोग किया गया। उन नामों का जल्द से जल्द सूची शामिल NUL
, PRN
, CON
, AUX
और COM1
के माध्यम से COM4
। NUL
null डिवाइस है। यह हमेशा पढ़ने या लिखने के लिए खोला जा सकता है, इस पर कोई भी राशि लिखी जा सकती है, और पढ़ता है कि हमेशा सफल होता है लेकिन कोई डेटा वापस नहीं करता है। अन्य में समानांतर प्रिंटर पोर्ट, कंसोल और चार सीरियल पोर्ट शामिल हैं। MSDOS 5 के रूप में, कई और आरक्षित नाम थे, लेकिन बुनियादी सम्मेलन बहुत अच्छी तरह से स्थापित था।
जब विंडोज बनाया गया था, तो यह MSDOS कर्नेल के शीर्ष पर एक काफी पतली अनुप्रयोग स्विचिंग परत के रूप में जीवन शुरू कर दिया, और इस तरह एक ही फ़ाइल प्रतिबंध था। जब विंडोज NT को अपने आप में एक सच्चे ऑपरेटिंग सिस्टम के रूप में बनाया गया था, तो उनके उन्मूलन की अनुमति देने के लिए काम करने जैसे नामों NUL
और COM1
बहुत व्यापक रूप से ग्रहण किया गया था। हालांकि, यह विचार कि नए उपकरणों को हमेशा ऐसे नाम मिलेंगे जो भविष्य के उपयोगकर्ताओं को वास्तविक फ़ाइलों के लिए ब्लॉक करेंगे, यह स्पष्ट रूप से अनुचित है।
Windows NT और सभी संस्करण जो (2K, XP, 7, और अब 8) का पालन करते हैं, सभी का पालन करते हैं कर्नेल कोड से अधिक विस्तृत NT Namespace का उपयोग करें और ध्यान से निर्मित और अत्यधिक गैर-पोर्टेबल उपयोगकर्ता अंतरिक्ष कोड का उपयोग करें। उस नाम स्थान में, डिवाइस ड्राइवर \Device
फ़ोल्डर के माध्यम से दिखाई देते हैं । आवश्यक पिछड़े संगतता का समर्थन करने के लिए \DosDevices
फ़ोल्डर का उपयोग करने वाला एक विशेष तंत्र है जो किसी भी फ़ाइल सिस्टम फ़ोल्डर में आरक्षित फ़ाइल नामों की सूची को लागू करता है। उपयोगकर्ता कोड सामान्य Win32 API के नीचे API परत का उपयोग करके इस आंतरिक नाम स्थान को ब्राउज़ कर सकता है; कर्नेल नाम स्थान का पता लगाने के लिए एक अच्छा उपकरण है WinObj माइक्रोसॉफ्ट पर SysInternals समूह से।
विंडोज़ में फ़ाइलों (और उपकरणों) के कानूनी नामों के आसपास के नियमों का पूरा विवरण के लिए, MSDN का यह पृष्ठ सूचनात्मक और चुनौतीपूर्ण दोनों होगा। नियम उनके मुकाबले बहुत अधिक जटिल हैं, और वास्तव में कुछ सरल सवालों का जवाब देना असंभव है जैसे "कितनी लंबी कानूनी पूरी तरह से योग्य पथ नाम है?"