मुझे अंदर एक फ़ोल्डर को हटाने की जरूरत है जिसमें अन्य फ़ोल्डर और फाइलें हैं। मैंने कोशिश की del
और rmdir
आज्ञा दी लेकिन कभी-कभी वे कुछ त्रुटि लाइनों के साथ विफल हो जाते हैं:[PATH]: The directory isn't empty.
क्या कोई अच्छा विकल्प है?
मुझे अंदर एक फ़ोल्डर को हटाने की जरूरत है जिसमें अन्य फ़ोल्डर और फाइलें हैं। मैंने कोशिश की del
और rmdir
आज्ञा दी लेकिन कभी-कभी वे कुछ त्रुटि लाइनों के साथ विफल हो जाते हैं:[PATH]: The directory isn't empty.
क्या कोई अच्छा विकल्प है?
जवाबों:
यह मेरी स्वचालित बिल्ड स्क्रिप्ट के साथ बहुत कुछ होता है।
मुझे लगता है कि कारण कुछ एप्लिकेशन हो सकता है जिसमें "शेयर डिलीट" के साथ उस निर्देशिका में एक फ़ाइल खुली हो। Ie अनुप्रयोग फ़ाइल को हटाने की अनुमति देता है (यही कारण है कि मैं हटाता हूँ कि कॉल DeleteFile कॉल विफल नहीं होती है), लेकिन फ़ाइल केवल गायब हो जाएगी क्योंकि आवेदन बंद हो गया है।
इसका मतलब है कि फ़ाइल तब भी हो सकती है जब rmdir
कमांड फ़ोल्डर को हटाने की कोशिश करता है, इसलिए त्रुटि संदेश। इसके तुरंत बाद, कहा गया कि एप्लिकेशन इसे बंद कर देगा, फ़ाइल गायब हो जाएगी, और जब आप फ़ोल्डर का निरीक्षण rmdir
करेंगे तो यह देखने के लिए कि कौन सी फ़ाइल के बारे में बात कर रहा था वह खाली हो जाएगा।
कम से कम मेरा सिद्धांत तो यही है।
हैरी जॉनसन द्वारा प्रस्तावित वर्कअराउंड अच्छा दिखता है। केवल मैं rmdir
आदेशों के बीच एक विराम सम्मिलित करूंगा । बेशक विंडोज में आसानी से स्क्रिप्ट करने योग्य "पॉज़" कमांड नहीं है (सुधार: प्राचीन विंडोज संस्करण नहीं हैं, नए हैं - टिप्पणियां देखें)। लेकिन अगर सेकंड ग्रैन्युलैरिटी पर्याप्त है तो ping
एक पॉज़ बनाने के लिए उपयोग किया जा सकता है :
ping -n {desired_delay_in_seconds + 1} 127.0.0.1 >nul
तो कुल में:
rd /s /q foo
:: retry once
if exist foo (
:: clear errorlevel
cmd /c
:: pause
ping -n 2 127.0.0.1 >nul
:: retry
rd /s /q foo
)
:: retry yet again
if exist foo (
cmd /c
ping -n 2 127.0.0.1 >nul
rd /s /q foo
)
:: give up
if exist foo {panic}
rm -rf /directory/
सभी ऑपरेटिंग सिस्टम पर वैश्विक होना चाहिए।
timeout /t 3
pause
कमांड नहीं है )।
प्रयत्न, कोशिश:
rmdir /S your_directory
या:
rmdir /S /Q your_directory
पुष्टिकरण संदेशों को छोड़ने के लिए।
del
और rmdir
कुछ भी नहीं पूछता है, वे वर्णन में एक की तरह कुछ पंक्तियां भेजते हैं।
rmdir /s
हटाने के लिए संभव है कि कुछ भी हटा देगा। आपके पास एक प्रोग्राम द्वारा लॉक की गई फाइलें, केवल पढ़ने वाली फाइलें या फाइलें हैं जिन्हें हटाने के लिए आपको प्रशासनिक पहुंच की आवश्यकता होती है। वहाँ एक भी आदेश नहीं है जो आपके लिए उन सभी स्थितियों का ध्यान
आपके पास कुछ आसानी से फाइलें हो सकती हैं, आप इनका उपयोग करके छुटकारा पाने के लिए डेल / एफ विकल्प का उपयोग कर सकते हैं
del /S /F your_directory
rmdir your_directory
आपके पास कुछ छिपी हुई फाइलें भी हो सकती हैं और यदि आप वास्तव में सुनिश्चित हैं कि आप उन्हें हटाना चाहते हैं, तो आप इसका उपयोग कर सकते हैं
del /S /F /AH your_directory
rmdir your_directory
यदि यह अभी भी विफल रहता है, तो या तो आपके पास कुछ फ़ाइलों को हटाने की अनुमति नहीं है, या कुछ फाइलें अभी भी उपयोग में हैं।
मेरा मानना है कि विंडोज 7 (और शायद अन्य संस्करणों) में एक बग है जो कभी-कभी इस लक्षण का कारण बनता है; या यह थर्ड-पार्टी सॉफ्टवेयर में बग हो सकता है। (क्या आपके पास किसी भी अवसर पर सिमेंटेक एंडपॉइंट सुरक्षा स्थापित है?)
वैसे भी, मैं इसे काफी बार चला चुका हूं। ज्यादातर मामलों में, समस्या को rd /s /q
लगातार दो या तीन बार चलाकर काम किया जा सकता है ।
यदि यह एक बैच फ़ाइल में है, तो आप कुछ इस तरह से कर सकते हैं:
rd /s /q foo
if exist foo rd /s /q foo
if exist foo rd /s /q foo
if exist foo echo Help! & pause
del
अंदर फ़ाइलों पर उपयोग करें , फिर rmdir
फ़ोल्डर को हटाने के लिए।
rmdir
सभी फ़ाइलों को हटाने के लिए विधि का उपयोग करने के लिए , निर्देशिका नाम से पहले/S
स्विच का उपयोग करें, और हटाने के लिए संकेत दबाने के लिए। यह ऐसा करने का सबसे अच्छा तरीका है, क्योंकि आप किसी भी फाइल को याद नहीं करते हैं। हालांकि / Q स्विच का उपयोग करने में सावधानी बरतें, क्योंकि यह आपको सिस्टम या हिडन फाइल विशेषताओं से आगाह नहीं करेगा/Q
विंडोज के पुराने संस्करण (डॉस, विंडोज 95/98 / ME), या DELTREE
के बराबर है । मैं अपने Windows 7 वर्कस्टेशन पर बैच फ़ाइलों में उपयोग करता हूं, हालांकि ठीक है।RM
RMDIR
DELTREE
Deletes a directory and all the subdirectories and files in it.
To delete one or more files and directories:
DELTREE [/Y] [drive:]path [[drive:]path[...]]
/Y Suppresses prompting to confirm you want to delete
the subdirectory.
[drive:]path Specifies the name of the directory you want to delete.
Note: Use DELTREE cautiously. Every file and subdirectory within the
specified directory will be deleted.
मुझे लगता है कि आप इसे इस तरह से उपयोग कर सकते हैं:
msg*your file is going to delete
pause
del/s /q "C:\Users\Rd\Desktop\New folder (2)\"
rmdir /s /q "C:\Users\Rd\Desktop\New folder (2)\"
mkdir "C:\Users\Rd\Desktop\New folder (2)"