कैसे बनाना है। बीएटी फ़ाइल इसे पूरा करने के बाद स्वयं को हटा दें? मेरे पास एक साधारण बल्ले फ़ाइल है जो एक प्रक्रिया को समाप्त करती है। मैं चाहता हूं कि बीएटी फाइल खुद को हटाने के लिए।कैसे बनाया जाए। बीएटी फ़ाइल इसे पूरा करने के बाद स्वयं को हटा दें?
उत्तर
@ECHO OFF
SETLOCAL
SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"
ECHO "This script will now self-destruct. Please ignore the next error message"
DEL "%~f0"
ध्यान दें कि डेल लाइन बेहतर आखिरी बात आप बैच फ़ाइल के अंदर निष्पादित करने का इरादा हो, अन्यथा आप भाग्य :) से बाहर हो
यह बाहर प्रिंट होगा एक बदसूरत त्रुटि संदेश है, लेकिन यह सौम्य है, और कोड इस तरह से थोड़ा उलझन में है। यदि आपको त्रुटि संदेश से छुटकारा पाने के बारे में बहुत कुछ परवाह है, तो इसे छुटकारा पाने के लिए dbenham's answer देखें।
क्या आप इसे थोड़ा सा बता सकते हैं? someotherprogram.exe क्या है और आप इसके अंदर क्या पंट करते हैं? –
@ रिचर्ड: 'SomeOtherProgram.exe' को किसी भी प्रोग्राम के रूप में बदला जा सकता है। उदाहरण के लिए, 'notepad.exe'। यह वह कार्यक्रम है जिसे मारा जाएगा, और इससे कोई फ़र्क नहीं पड़ता कि वह प्रोग्राम क्या करता है - इस बैच फ़ाइल परवाह नहीं है। यह उस exe नाम के साथ एक कार्य को मारने के लिए बस 'टास्ककिल' का उपयोग करता है। क्या यह इसे साफ़ करता है? यदि हां, तो क्या आपको लगता है कि इसे उत्तर में जोड़ा जाना चाहिए? यदि नहीं, तो कृपया अधिक विस्तार से बताएं कि आप किन भागों को समझते हैं, और जो आप नहीं करते हैं। –
उत्तर @Merlyn के लिए धन्यवाद। मेरी गलती, मैंने सवाल अच्छी तरह से नहीं पढ़ा। मैं यह महसूस कर रहा था कि आपको बल्ले को हटाने के लिए एक प्रक्रिया को मारने की आवश्यकता क्यों है। :) –
आपने ओएस का उल्लेख नहीं किया है, लेकिन यदि यह विंडोज एक्सपी प्रोफेशनल पर है और आपके पास उचित अनुमतियां हैं, तो आप बैच फ़ाइल शेड्यूल को बाद में फ़ाइल को हटाने के लिए एक-शॉट विंडोज अनुसूचित कार्य शेड्यूल कर सकते हैं। schtasks
कमांड का उपयोग करें, here दस्तावेज।
अन्यथा, आप आम तौर पर निष्पादित की जा रही फ़ाइल को हटा नहीं सकते हैं, क्योंकि इसमें सभी तरह के नास्टनेस की संभावना है। इसके अतिरिक्त, उपयोग में निष्पादन योग्य को हटाने का प्रयास किसी भी एंटीवायरस प्रोग्राम द्वारा बहुत ही संदिग्ध व्यवहार के रूप में देखा जाता है, इसलिए यह संभावना है कि आप इन्हें भी आगे बढ़ाएंगे।
असल में, एक बैच फ़ाइल को बिना किसी त्रुटि के खुद को हटाने के लिए एक आश्चर्यजनक सरल तरीका है जिसे विशेष अनुमतियों की आवश्यकता नहीं होती है। [मेरा जवाब] देखें (http://stackoverflow.com/a/20333152/1012053) – dbenham
बस अपने बैच फ़ाइल की अंतिम पंक्ति में इस आदेश को जोड़ने
Del batch_file_name.bat
batch_file_name.bat
अपने बैच फ़ाइल का नाम
चीयर्स
के साथ बदलकर यह काम नहीं करता है। –
* @ रिकार्डो पोलो * नहीं, यह काम नहीं करेगा क्योंकि प्रक्रिया लॉक है, इसलिए जब तक कि पीआईडी जारी नहीं किया जाता है तो फ़ाइल हटा नहीं जाएगी। मैंने वास्तव में सोचा कि ऊपर चर्चा की जा रही है, लेकिन * @ हानी लुडिन * यह याद आती है! – CriticalPoint
Merlyn मॉर्गन-ग्राहम जवाब को नष्ट करने का प्रबंध करती है बैच स्क्रिप्ट चल रहा है, लेकिन यह निम्न त्रुटि संदेश उत्पन्न करता है: "बैच फ़ाइल नहीं मिल सकती है।" यह एपी नहीं है अगर स्क्रिप्ट विंडो समाप्त हो जाती है तो कंसोल विंडो बंद हो जाती है, क्योंकि संदेश इतनी तेजी से फ्लैश होगा कि कोई भी इसे देख नहीं पाएगा। लेकिन स्क्रिप्ट समाप्ति के बाद कंसोल खुला रहता है तो त्रुटि संदेश बहुत अवांछनीय है।
जॉन फेमिनेला का सही विचार है कि त्रुटि के बिना बैच फ़ाइल को साफ़ करने के लिए एक और प्रक्रिया की आवश्यकता है। किसी कार्य को शेड्यूल करना काम कर सकता है, लेकिन एक आसान तरीका है: एक ही कंसोल के भीतर एक नई डिलीट प्रक्रिया लॉन्च करने के लिए स्टार्ट का उपयोग करें। प्रक्रिया को शुरू करने और निष्पादित करने में समय लगता है, इसलिए अभिभावक स्क्रिप्ट को हटाने से पहले साफ-सफाई समाप्त करने का मौका होता है।
start /b "" cmd /c del "%~f0"&exit /b
अद्यतन 2015-07-16
मैं एक बैच स्क्रिप्ट किसी भी त्रुटि संदेश उत्पन्न किए बिना ही हटाना है करने के लिए एक और वास्तव में चालाक तरीका ढूंढ निकाला है। तकनीक, EXIT /B
तरह http://www.dostips.com/forum/viewtopic.php?f=3&t=6491
पर गोटो (कुछ रूसियों द्वारा की खोज), अंग्रेजी में वर्णित की एक नई खोज की व्यवहार पर निर्भर करता है सारांश में, (GOTO) 2>NUL
बर्ताव को छोड़कर यह फोन करने वाले के संदर्भ में श्रेणीबद्ध आदेशों के निष्पादन के लिए अनुमति देता है!
तो आप सभी की जरूरत है
(goto) 2>nul & del "%~f0"
मुझे आपका दूसरा समाधान पसंद है। पहली बार बहुत अच्छी तरह से काम करेगा, लेकिन मुझे यकीन नहीं है कि मौजूदा बैच स्क्रिप्ट दुभाषिया खत्म होने से पहले 'स्टार्ट' अपना काम पूरा करने का प्रबंधन करता है, तो यह काम करने की सख्ती से गारंटी है। मुझे लगता है कि प्रक्रिया शेड्यूलर काम कर रहा है या सिस्टम भारी भार के तहत नहीं है, तो शायद किसी भी दौड़ की स्थिति एक समस्या होने की संभावना नहीं है, तो शायद यह सिर्फ एक नाइट-पिक है। –
(और "काम करने की गारंटी" से, मेरा मतलब है त्रुटि संदेश से बचने के लिए गारंटी) –
@ MerlynMorgan-ग्राहम - बिल्कुल यह एक दौड़ की स्थिति है, इसलिए आप तकनीकी रूप से सही हैं। लेकिन मेरे लिए एक परिदृश्य की कल्पना करना मुश्किल है जहां समय उलटा हुआ है। – dbenham
तुम कर सकते हो @ Merlyn के aswer
@ECHO OFF
SETLOCAL
SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"
DEL "%~f0"
अब इस कोडिंग के साथ एक VBScript बनाने के लिए और hidden.vbs के रूप में सहेज, इस VBScript बैच छुपा देगा फ़ाइल की खिड़की
set w = CreateObject(“WScript.Shell”)
W.Run chr(34) & “%userprofile%\desktop\the_batch_file.bat” & chr(34), 0
set w= Nothing
तब बैच फ़ाइल इस VBScript
@ECHO OFF
SETLOCAL
SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"
start "path to hidden.vbs"
DEL "%~f0"
चलाते हैं तो यह इसे हटाने त्रुटि संदेश देखने के लिए असंभव करने से पहले बैच फ़ाइल को छिपाने जाएगा।
तुम भी डेल "% ~ f0" के उत्पादन में निर्देशन कर सकें शून्य पर तो जैसे उत्पादन ...
@ECHO OFF
SETLOCAL
SET someOtherProgram=SomeOtherProgram.exe
TASKKILL /IM "%someOtherProgram%"
DEL "%~f0" > NUL
विफलता को इंजीनियर करने का प्रयास करने के लिए यह एक दिलचस्प प्रोजेक्ट हो सकता है, लेकिन चर्चा की गई त्रुटि संदेश 'del' से नहीं आती है, लेकिन क्योंकि दुभाषिया अब हटाए गए फ़ाइल से "अगला आदेश" पढ़ने की कोशिश करता है। आपका सुझाव उस पर दबाने नहीं देता है। – Stephan
जब मैंने इसे इस तरह से चलाया तो मुझे कोई त्रुटि संदेश नहीं मिला, लेकिन इसके बिना किया। –
मेरे लिए यह बिल्कुल वही है, बिना 'nul' के या बिना।जैसा कि मैंने कहा था: त्रुटि 'del' से नहीं आती है, इसलिए 'del' के आउटपुट को रीडायरेक्ट करने में मदद नहीं होगी (इसके अलावा: ERRORS को दबाने के लिए, आपको STDERR को पुनर्निर्देशित करना होगा:' 2> nul' - जो ' टी या तो मदद करें।) – Stephan
- 1. आईआर को फ़ाइल में कैसे सहेजना है और इसे निष्पादन योग्य फ़ाइल में कैसे बनाया जाए?
- 2. इसे छोटा (पायथनिक) कैसे बनाया जाए?
- 3. बैच/बीएटी - बैच/बीएटी फ़ाइल के साथ प्रॉक्सी सेटिंग्स बदलें
- 4. गिट प्रतिबद्ध करने के बाद फ़ाइल को निकालना, इसे मास्टर
- 5. बीएटी फ़ाइल को निर्धारित कार्य
- 6. बीएटी फ़ाइल से प्रक्रिया को कैसे रोकें?
- 7. javax.faces.model.SelectItem को कैसे बनाया जाए
- 8. स्वयं बनाया पॉव() C++
- 9. एचटीएमएल तत्व कैसे ढूंढें और फिर इसे हटा दें?
- 10. CommonsMultipartFile ऑब्जेक्ट को कैसे बनाया जाए केवल एक फ़ाइल
- 11. बीएटी
- 12. डिफॉल्ट इंजन के रूप में innodb को कैसे बनाया जाए
- 13. विंडोज बैच फ़ाइल (बीएटी)
- 14. गिट: विभिन्न अनमोल राज्यों को कैसे बनाया जाए?
- 15. धागा कैसे बनाया जाए?
- 16. टीएफएस 2008, स्रोत नियंत्रण से फ़ाइल को हटा दें, लेकिन इसे
- 17. मेरे अनुप्रयोगों को "skinnable" कैसे बनाया जाए?
- 18. गिट फ़ाइल को रिपॉजिटरी से हटा दें लेकिन इसे फाइल सिस्टम
- 19. पहले निष्पादन पर इसे सेट करने के बाद प्रोग्रामिंग लेआउट को कैसे बदला जाए?
- 20. बूस्ट का उपयोग करके - इसे स्रोत नियंत्रण में डाल दें या किसी भी डेवलपर को स्वयं इंस्टॉल करने दें?
- 21. msvc2010 के साथ जीएसएल कैसे बनाया जाए?
- 22. थैंक्सगिविंग तुर्की के आधे हिस्से को कैसे बनाया जाए?
- 23. UIView के भीतर UIbutton draggable को कैसे बनाया जाए?
- 24. आईफोन ऐप को "स्किनेबल" कैसे बनाया जाए?
- 25. इसे जेस्परपोर्ट (आईरपोर्ट में बनाया गया) में जोड़ने के बाद छवि गुणवत्ता को कैसे संरक्षित किया जाए?
- 26. php अगर str_replace को कैसे बनाया जाए?
- 27. एक साधारण उलटा इंडेक्स कैसे बनाया जाए?
- 28. Django विदेशी वस्तु को हटा दें?
- 29. गिट: एक फ़ाइल को संस्करणित करने से हटा रहा है, लेकिन इसे हटा नहीं रहा है
- 30. File.Copy पूरा होने के बाद स्रोत फ़ाइल लॉक
तो तुम एक बैच फ़ाइल है कि किसी भी विंडोज़ प्रदर्शित नहीं करता है चाहते हैं, को मारता है एक पूरा होने के बाद खुद को संसाधित और हटा देता है। जिज्ञासा के कारण। क्यूं कर? –