कैसे एक असीम आवर्ती निर्देशिका पेड़ को हटाने के लिए?


9

हमारे विंडोज 2003 फ़ाइल सर्वरों में से किसी पर किसी न किसी को कुछ उपयोगकर्ताओं के घर फ़ोल्डर के भीतर असीम आवर्ती निर्देशिका पेड़ बनाने में कामयाब रहे, और उन्हें हटाया नहीं जा सकता।

आप कुछ इस तरह से हवा करते हैं:

D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...

और यह असीम रूप से जारी है जहां तक ​​मैं बता पा रहा हूं।

निर्देशिका ट्री को उस सिस्टम से हटाने की कोशिश की जा रही है जो "फाइल या फ़ोल्डर को हटाने में त्रुटि: फाइल डिलीट नहीं कर सकता:" में परिणाम पर रहता है। नेटवर्क से जुड़े विंडोज 7 सिस्टम से इसे हटाने की कोशिश करने से "उपयोग में फ़ोल्डर" त्रुटि का परिणाम मिलता है।

यदि आप निर्देशिका ट्री को नीचे तक ले जाते हैं, तो आप अंततः एक निर्देशिका तक पहुँचते हैं, जिसे खोला या हटाया नहीं जा सकता है (यदि मानक विकल्पों में से कोई भी सही नहीं दिखता है), हालाँकि यदि आप उसी निर्देशिका को किसी अन्य सिस्टम पर साझा से खोलने का प्रयास करते हैं इसे खोला जा सकता है, हालांकि विंडोज एक्सप्लोरर बेहद धीमा हो जाता है।

मैंने इस पोस्ट में सुझावों की कोशिश की है , साथ ही लिनक्स डिस्क के साथ सर्वर को बूट किया है और निर्देशिका को rm -rf करने की कोशिश की है, न ही काम किया है।

यह एक रहस्य है।

संपादित करें: मैं यह भी जोड़ सकता हूं कि निर्देशिकाओं का नाम बदलना संभव है, बस उन्हें हटाएं नहीं।


1
सर्वर फ़ॉल्ट पर एक समान समस्या हल हो गई थी ।
लिलिएनथाल

जवाबों:


14

मेरे पास एक अंतहीन पुनरावर्ती फ़ोल्डर भी था जो एक जावा आईडीई द्वारा बनाया गया था, और मैं इसे या तो विंडोज एक्सप्लोरर या cmd प्रॉम्प्ट में हटाने में असमर्थ था।

हालाँकि, जब मैंने git स्थापित किया तो मैंने git-bash भी स्थापित किया। Git-bash में आप कमांड जारी कर सकते हैं:

rm -rfd recursive_folder_name

और यह इसका ख्याल रखेगा।


महत्वपूर्ण नोट: यह एक बड़ी राशि ले सकता है ... एक ब्रेक लें, कुछ खाएं, एक कॉफी पीएं, और यूनिक्स को अपना काम करने दें;) आश्चर्यजनक रूप से यह काम करता है
Antwane

यह भी काम करता है अगर एक vmware आधारित linux का उपयोग करें और ड्राइव को माउंट करें (यदि यह बाहरी है ...)
वोल्फगैंग Fahl

4

यह संभव है कि किसी फ़ोल्डर में एक सिम्बॉलिक लिंक कहीं है, सबसे अधिक संभावना है कि studentआपके रास्ते में दूसरा है।

कमांड निष्पादित करने का प्रयास करें:

dir D:\Student\2012\user.name\servername

और देखें कि क्या studentDIR या SYMLINK / JUNCTION के रूप में चिह्नित है।

उदाहरण के लिए, यह dirकमांड का एक विशिष्ट आउटपुट है :

04/24/2012  10:58 PM    <DIR>          .
04/24/2012  10:58 PM    <DIR>          ..
04/24/2012  10:58 PM    <SYMLINKD>     a [h:\a]

आप देखते हैं कि पहले दो प्रविष्टियों को चिह्नित किया गया है DIR, जबकि तीसरे (दूसरे फ़ोल्डर में एक प्रतीकात्मक लिंक) के रूप में चिह्नित किया गया है SYMLINKD। आपके मामले में (विंडोज 2003) मुझे लगता है कि JUNCTIONएस के बजाय SYMLINKएस हैं।

यदि studentफ़ोल्डर एक प्रतीकात्मक लिंक या जंक्शन है, तो कमांड चलाएं:

cd /d D:\Student\2012\user.name\servername
rmdir student

और इस प्रकार पुनरावृत्ति से छुटकारा मिलेगा।


निर्देशिकाओं में से कोई भी सहानुभूति नहीं है, मैंने पहले जोड़े को प्लस "अंत" पर चेक किया जहां यह अटक जाता है।
अंग्रेजीइफिक्स

2

यह संभव है कि जो भी उस फ़ोल्डर में काम कर रहा था, वह एक जंक्शन बिंदु बनाने का प्रबंध करता है, जो वापस से ऊपर की ओर user.nameहोता है servername, इस प्रकार 'अनंत लूप' डायरेक्टरी ट्री बनाता है ।

जंक्शन NTFS फ़ाइल सिस्टम की एक विशेषता है जो आपको निर्देशिका के लिए एक प्रतीकात्मक लिंक बनाने की सुविधा देता है जो निर्देशिका के लिए एक उपनाम के रूप में कार्य करता है। http://en.wikipedia.org/wiki/NTFS_junction_point

आप जिस समस्या का वर्णन करते हैं, विकी पृष्ठ के "अवलोकन प्रभाव" अनुभाग के अंतर्गत देख सकते हैं।

उस सर्वर के अंतर्गत जंक्शनों को सूचीबद्ध करने के लिए इस उपयोगिता को चलाने का प्रयास करें:

http://technet.microsoft.com/en-us/sysinternals/bb896768

यह आपको जंक्शन बिंदु को हटाने की क्षमता भी देना चाहिए।


2

मुझे एक समान समस्या थी जब ग्रहण ने एक बड़े पैमाने पर गहरा फ़ोल्डर ट्री बनाया, जिसे मैं हटा नहीं सका। हालाँकि जब से फ़ोल्डर्स को स्थानांतरित करना और उसका नाम बदलना संभव हो गया था, तब मैंने काम करने के लिए एक बैच फ़ाइल लिखी थी, जिस तरह से यह उस समय एक को हटाने वाले पेड़ को हटाने का काम करता है और यह काम करता है! सी डिरेक्टरी में FOLDERNAME के जाहिरा तौर पर गहरे फ़ोल्डर ट्री के लिए , अर्थात

C:/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/...

बैच फ़ाइल :

:LoopStart
REN "C:/*FOLDERNAME*" "*TEMPFOLDERNAME*"
MOVE "C:/*TEMPFOLDERNAME*/*FOLDERNAME*" "C:/"
RMDIR /S /Q "C:/*TEMPFOLDERNAME*"
GOTO LoopStart
:LoopEnd

यह काम करता है क्योंकि TEMPFOLDERNAME अब एक परिमित लंबाई का पेड़ है (इसमें कुछ भी नहीं के साथ एक एकल फ़ोल्डर) और बड़े पैमाने पर FOLDERNAME ट्री में लूप चलने पर हर बार एक कम फ़ोल्डर होता है, अंत में शीर्ष पर एक फ़ोल्डर को हटाकर नीचे तक पहुंचता है।


1

मैंने 5000+ डायरेक्टरी-डीप फोल्डर मेस के साथ एक ही इश्यू में रन किया, जो कुछ जावा एप्लिकेशन ने किया और मैंने यह लिखा:

https://gitlab.imanolbarba.net/imanol/DiREKT

इसने थोड़ी देर के बाद पूरी बात को हटा दिया, लेकिन यह काम करने में कामयाब रहा, मुझे उम्मीद है कि यह उन लोगों की मदद करता है जो (जैसा कि), मैं एक ही निराशाजनक मुद्दे पर चलता हूं


1

इस स्क्रिप्ट के साथ मेरे अंतहीन लूपिंग निर्देशिका को हल किया:

:LoopStart
takeown /F "c:\temp\Application Data"
Attrib -S -H "c:\temp\Application Data"
REN "C:\temp\Application Data" "5"
takeown /F "c:\temp\5\Application Data"
Attrib -S -H "c:\temp\5\Application Data"
MOVE "c:\temp\5\Application Data" "C:\temp"
Del /F /S /Q c:\temp\5\*.*
RMDIR /S /Q "C:\temp\5"
GOTO LoopStart
:LoopEnd

0

मुझे भी यही समस्या थी। जिस फ़ोल्डर को मैं हटाना चाहता था, उसी नाम के लिंक का अंतहीन पेड़ था और इसे हटाने के हर प्रयास के कारण विंडोज को "फ़ाइल बहुत लंबी ..." त्रुटि फेंकनी पड़ी। यह उपरोक्त सभी विधियों को शामिल करने की कोशिश के बिना विफल हो गया, इसलिए मैंने प्रश्न में फ़ोल्डर के ठीक ऊपर एक cmd विंडो में Cygwin के "rm" कमांड की कोशिश की। मैंने "rm -r -f [फोल्डर]" में प्रवेश किया और फोल्डर बिना किसी शिकायत के डिलीट कर दिया गया।

आप https://cygwin.com/install.html से Cygwin को मुफ्त में डाउनलोड कर सकते हैं । इसका मूल रूप से विंडोज के लिए एक UNIX शेल है जिसमें सभी सामान्य कमांड्स (जैसे, ls, rm, डु, और कैट) हैं, लेकिन एक टन पैकेज भी है कि अगर सभी को डाउनलोड किया गया तो लगभग 1GB स्थान लेगा। मेरा मानना ​​है कि डिफ़ॉल्ट डाउनलोड पैकेज में UNIX कमांड शामिल हैं। यदि नहीं, तो वे "बर्तन" बंडल में हैं यदि स्मृति कार्य करती है।

नोट: आपको इसकी मूल bash शेल विंडो में Cygwin कमांड चलाने की आवश्यकता नहीं है। वे आपके सिस्टम PATH पर्यावरण चर में cygwin के "बिन" निर्देशिका में पथ जोड़कर एक cmd विंडो में चलाए जा सकते हैं। मेरे मामले में मैंने "C: \ cygwin64 \ bin" जोड़ा।

आशा है कि ये आपकी मदद करेगा।


0

मुझे यहां वैसी ही समस्या है।

अन्य पोस्ट में MS RoboCopy के साथ फ़ोल्डर गर्त नेटवर्क शेयर को लक्षित करने के लिए एक खाली फ़ोल्डर को मिरर करने का सुझाव दिया गया था।

इस सही समय पर मैं इसे चला रहा हूं, "> nul" से स्पीडअप (यह करता है, वास्तव में):

"C: \ TEMP" एक खाली फ़ोल्डर है और "W: \ TMP" प्रभावित फ़ोल्डर है:

रोबोकॉपी / मीर c: \ temp \ 127.0.0.1 \ w $ \ tmp> nul


1
सुपर उपयोगकर्ता में आपका स्वागत है। यदि आप कहीं और से समाधान का हवाला दे रहे हैं, तो कृपया रोपण और आगे पढ़ने के लिए एक लिंक शामिल करें। उत्तर निश्चित समाधान होने का इरादा रखते हैं। यदि आप अभी भी इसे आज़माने की प्रक्रिया में हैं, तो यह पोस्ट करने के लिए समय से पहले हो सकता है।
फिक्सर 1234

0

मैं भी एक स्वसंपूर्ण विंडोज 10 प्रणाली पर यह था। C: \ User \ Name \ repeat \ दोहराने \ repeat \ repeat \ repeat \ दोहराने \ दोहराने अनंत तक प्रतीत होता है।

ओपी के अनुसार, मैं विंडोज या कमांड प्रॉम्प्ट का उपयोग करके लगभग 50 वें एक और आगे नहीं नेविगेट कर सकता हूं। मैं इसे हटा नहीं सकता था, या उस पर क्लिक कर सकता था, आदि बिल्कुल वर्णित के रूप में।

सी मेरी भाषा है इसलिए अंततः मैंने सिस्टम कॉल के लूप के साथ एक कार्यक्रम लिखा, जो तब तक दोहराते हैं जब तक वे विफल नहीं हो जाते। जॉनओ से डॉस कोड के अनुसार, मैंने tmp नामक एक निर्देशिका बनाई और उस में रिपीट \ रिपीटी को स्थानांतरित कर दिया, अब खाली हुए रिपीट फ़ोल्डर को हटा दिया, और वर्तमान फ़ोल्डर में वापस tmp \ दोहराएँ को स्थानांतरित कर दिया। बार बार!

 while (times<2000)
 {
  ChkSystem("move Repeat\\Repeat tmp");
  ChkSystem("rd Repeat");
  ChkSystem("move tmp\\Repeat Repeat");
  ++times;
  printf("Removed %d nested so far.\n", times);
 }

ChkSystem बस एक सिस्टम चलाता है () कॉल और रिटर्न मान की जांच करता है, अगर यह विफल रहा।

महत्वपूर्ण रूप से, यह कई बार विफल रहा। मैंने सोचा कि शायद मेरा कार्यक्रम काम नहीं कर रहा था, या यह कि यह सब के बाद बहुत लंबा था। हालाँकि, सिस्टम कॉल के साथ मैंने पहले भी यह किया है, चीजों को सिंक्रनाइज़ नहीं किया जा रहा है, इसलिए मैंने बस कार्यक्रम को फिर से चलाया और इसे वहीं से आगे बढ़ाया जहां से रवाना हुआ था, इसलिए यह मत सोचो कि आपका कार्यक्रम काम नहीं कर रहा है। कुल मिलाकर, इसे लगभग 20 बार चलाने के बाद, इसने उन सभी को साफ कर दिया। कुल मिलाकर, यह मूल रूप से लगभग 1280 फ़ोल्डर्स गहरा था। पता नहीं इसका क्या कारण था। पागल।


0

3-स्तरीय लूपिंग निर्देशिकाओं के साथ:

:LoopStart
takeown /F "D:\temp\MyApp"
Attrib -S -H "D:\temp\MyApp"
REN "D:\temp\MyApp" "5"
takeown /F "D:\temp\5\MqttObserver"
Attrib -S -H "D:\temp\5\MqttObserver"
REN "D:\temp\5\MqttObserver" "6"
takeown /F "D:\temp\5\6\PackageFiles"
Attrib -S -H "D:\temp\5\6\PackageFiles"
REN "D:\temp\5\6\PackageFiles" "7"
MOVE "c:\temp\5" "C:\temp"
Del /F /S /Q c:\temp\5\*.*
RMDIR /S /Q "C:\temp\5"
MOVE "c:\temp\6" "C:\temp"
Del /F /S /Q c:\temp\6\*.*
RMDIR /S /Q "C:\temp\6"
MOVE "c:\temp\7" "C:\temp"
Del /F /S /Q c:\temp\7\*.*
RMDIR /S /Q "C:\temp\7"
GOTO LoopStart
:LoopEnd

कोड के साथ जाने के लिए स्पष्टीकरण? <:: ;; :: ;; :: ;; :: ;; :( | XXXX |) o ~
दलाल रस IT

0

मुझे यह व्यवस्थापक कंसोल के माध्यम से रनिंग chkdsk / f द्वारा ठीक किया गया, रिबूट किया गया और फिर फ़ाइल एक्सप्लोरर का उपयोग किया गया। हालाँकि विंडोज़ ने लंबी फ़ाइल / फ़ोल्डर के बारे में कुछ शिकायत की थी, लेकिन मैंने उसे हटाने की पुष्टि करने के बाद समस्याग्रस्त पुनरावर्ती फ़ोल्डर से छुटकारा पा लिया।

सुनिश्चित नहीं हैं कि मेरे विंडोज 7 प्रो फाइल सिस्टम में पुराने चॉक विकल्प का उपयोग करके मेरे द्वारा बनाई गई अन्य समस्याएं हैं ..


0

मेरे लिए विंडोज रोबोकोपी विधि की इस भिन्नता ने काम किया:

mkdir c:\empty
robocopy c:\empty toolongdir /purge
rmdir c:\empty
rmdir toolongdir

हां, इसमें समय लगता है लेकिन काम किया।


-1

बस MS ROBOCOPY को निम्न प्रकार से चलाएं:

  1. फ़ोल्डर के समान नाम के साथ एक "खाली फ़ोल्डर" बनाएं जिसमें "असीम रूप से आवर्ती निर्देशिका ट्री" हो।
  2. / MIR विकल्प के साथ कमांड लाइन से ROBOCOPY चलाएँ।
  3. ROBOCOPY समाप्त होने के बाद (और इसमें कुछ सेकंड लग सकते हैं),
  4. फ़ोल्डर को "असीम रूप से आवर्ती निर्देशिका ट्री" के साथ हटाएं जो अब "खाली फ़ोल्डर" है।
  5. इसके अलावा आगे बढ़ें और चरण 1 में आपके द्वारा बनाए गए "खाली फ़ोल्डर" को हटा दें।

। । । । । । । । । । । । । । ।

ROBOCOPY "C: \ anyplace \ BADFOLDER" "C: \ जहाँ भी \ BADFOLDER" / MIR

कहाँ पे:

C: \ anyplace \ BADFOLDER .. आपके द्वारा बनाया गया "खाली फ़ोल्डर" है, और

C: \ जहाँ भी \ BADFOLDER .. वह फ़ोल्डर है जहाँ "असीम रूप से आवर्ती निर्देशिका ट्री" है।

। । । । । । । । । । । । । । ।

ROBOCOPY के चलने के बाद .. अब आपके पास दो "खाली" BADFOLDERS हैं।

सफाई करने के लिए, दोनों को हटा दें

C: \ anyplace \ BADFOLDER और C: \ जहाँ भी \ BADFOLDER

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.