سؤال كيفية حذف الدلائل مع مسار / أسماء طويلة جدا للحذف العادي


يبدو أن Windows تحتوي على حد طول لأسماء الملفات عند محاولة حذفها ، على الرغم من أنها لن تمنع إنشاء هذه الملفات.

تنشئ عملية الإنشاء لدينا عددًا من الملفات المؤقتة (العديد منها ينشئ نسخة من WSDL) التي تتعارض مع هذا الحد. لدينا النصي النمل قادر على حذفها بطريقة أو بأخرى عند القيام بتنظيف ، ولكن في بعض الأحيان أحتاج إلى حذف دليل workarea (حيث تذهب جميع ملفات temp) دون القيام بالفعل تنظيف كامل من النمل.

هذه هي نفس الاخطاء هذا السؤالولكن الأجوبة هناك لا تعمل بالنسبة لي لأنني أتعامل مع دليل ، وليس ملفًا ، ولا أعرف دائمًا ما هي الملفات المحددة أو الدلائل الفرعية التي تسبب المشكلة. وأحاول تجنب أي عملية يدوية (بخلاف تشغيل أمر واحد) لحذفها فعليًا.

إذا حاولت حذف الدليل من Explorer أتلقى الخطأ

Cannot delete [file name]: The file name you specified is not valid or too long.  
Specify a different file name

محاولة Remove-Item في powershell يعطي الخطأ التالي:

Remove-Item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
At line:1 char:12
+ Remove-Item  <<<< -force -Recurse <directory>

هل يعرف أي شخص أي أدوات أو طرق سهلة للالتفاف حول هذا الخطأ حذف دون الحاجة إلى العثور على الملفات المشكلة يدويا ونقل / إعادة تسميتها؟


355
2017-12-03 19:23


الأصل


لقد وجدت الحل قبل نشر هذا السؤال ، ولكن بما أن آخرين قد يواجهون هذا ، فقد قررت نشره حتى يتمكنوا من العثور على الحل الذي واجهته. - Herms
أعلم ، ولكن بصفة عامة عندما أقوم بأشياء كهذه أترك السؤال "بلا إجابة" لفترة من الوقت لأرى ما إذا كان لدى أي شخص آخر حل أفضل. - Herms
بواسطة بعيدا أبسط حل: youtube.com/watch؟v=qQTyTprFAOg - TaW
استخدام Ubuntu أو أي دولة أخرى Linux Bootable CD يمكننا تشغيل جهاز الكمبيوتر الخاص بنا Ubuntuأو أي نظام تشغيل آخر مؤقتًا.ثم يمكننا تحديد المجلد ويمكننا حذفه بسهولة. - kelum priyadarshane
يحتوي هذا السؤال القديم على بعض الإجابات المثيرة للاهتمام أيضًا: superuser.com/questions/45697/... - AdamV


الأجوبة:


استخدم ال 7 زيب مدير الملفات لحذفها.

إذا كنت لا تزال تواجه مشكلة ، فتأكد من أنك تستخدمها تحول+حذف داخل 7-Zip File Manager. خلاف ذلك ، يحاول Windows نقلها إلى "سلة المحذوفات" (التي ستفشل مرة أخرى).


402
2017-12-03 19:48



شكرا - هذا تخلص من شجرة دير التي ذهبت متكررة قليلا وعميقة جدا ل del / rmdir / rm / explorer لإزالة - Martin Beckett
عملت كبيرة باستخدام shift + Del - 7zip لا يمكن إرسال الملفات طويلة المسار إلى سلة المهملات .... - cori
+1 7zip. يجب عليك الانتقال إلى المجلد ، ثم استخدمه shift + Del مثل قالcori. إذا قمت بتحديد Delete الخيار من قائمة السياق ، فإنه فشل WILl هناك. shift + Del ذلك! - Urda
لم يعمل 7zip ل WIN7 64 ، لذلك فعلت لينكس. - Erik Friesen
I upvote هذا لأنه مع 7ZIP يمكنك حذف أيضا حذف المجلد الذي يحتوي على مجلدات متداخلة طويلة داخل. كان مشكلتي مع مجلد node_module يحتوي على أطنان حماقة من مجلد متداخل ولم أتمكن من إزالته. 7zip ثابتة من المجلد الأساسي لا تشوبه شائبة. +1 - Gruber


لم يعمل أي من الإجابات الأخرى (المجانية) هنا ، ولكنني عثرت على واحدة في موقع آخر:

rimraf <dir>

rimraf هو نود.جي إس الحزمة ، لذلك سوف تحتاج إلى تثبيت Node.js التي تشمل الآلية الوقائية الوطنية. ثم يمكنك تشغيل:

npm install -g rimraf

ثم يمكنك تشغيل rimraf من سطر الأوامر.

لقد وجدت هذا الحل لأن npm نفسها كانت تسبب هذه المشكلة بسبب طريقة تبعياتها.

على فكرة، rimraf يحصل اسمه من الأمر UNIX rm -rf، والتي تحذف بشكل متكرر الملفات والمجلدات.


307
2017-07-04 06:23



حاول عدة طرق. هذا فقط يعمل تماما! - Duckegg
أفضل إجابة للجميع :) نعم بسهولة beasy - Al-Mothafar
يجب أن يكون هذا هو الجواب المقبول. - NINCOMPOOP
يعمل الحل الخاص بك ولكن هذا هو f ## k-up أنني يجب استخدام وحدة js عقدة لحذف مجلدات وحدات js العقدة ... لا أريد أن أعيش على هذا الكوكب بعد الآن - Benoit P
خلقت عقدة المشكلة في المقام الأول بالنسبة لي ... ... مثيرة للاهتمام ... أن لديهم أيضا الحل. - Eric J.


يوجد لا حاجة لتثبيت أي برنامج لحل هذه القضية.

هذه المسألة يمكن حلها بسهولة باستخدام robocopyتم تثبيته مسبقًا منذ نظام التشغيل Windows Vista ، الذي تم إطلاقه في عام 2006.

فمثلا، rmdir /S /Q <dir> تم الإبلاغ عن فشل في بعض الحالات. ليست هناك حاجة لاستخدام 7zip أو أي أداة طرف ثالث. Powershell هو مبالغة. قد يعمل Cygwin ، ولكن قد لا يكون مثبتًا عليه. لذلك ، دعونا نركز على robocopy

الفكرة هي

  1. استعمال robocopy لنسخ + تحديث
  2. من مجلد فارغ جديد 
  3. إلى المجلد الذي تريد حذفه ، الهدف.

بعد التنفيذ robocopy، سيكون الدليل الهدف فارغًا أيضًا.

هذه التعليمات هي لسطر الأوامر. مجرد فتح البحث في ويندوز ، اكتب cmd ثم اضغط على Enter.

دعنا نقول استهداف للحذف هو:

C:\delete\this folder\with a very long name

نمضي على النحو التالي:

  1. أنشئ أولاً دليلاً فارغًا ، مثل f.i. C:\emptyfolder.

    mkdir C:\emptyfolder
    
  2. نسخ + تحديث من الدليل الفارغ إلى الهدف ، وذلك باستخدام هذا الخيار /purge

    robocopy c:\emptyfolder "C:\delete\this folder\with a very long name" /purge
    
  3. احذف الدليل الفارغ. لا تحتاج بعد الآن.

    rmdir c:\emptyfolder
    

نظرًا لعدم وجود ملفات أو مجلدات في الدليل المصدر (C:\emptyfolder) ، فإنه ببساطة حذف الملفات والمجلدات تحت الدليل الهدف (C:\delete\this folder\with a very long name) بشكل متكرر!

  • الحيلة النهائية: يمكنك تجنب الكتابة باليد

    C:\delete\this folder\with a very long name
    

    عن طريق سحب المجلد من نافذة Explorer والإفلات في نافذة Terminal / cmd.

كن حذرا: الملفات المحذوفة لن يذهب إلى سلة المهملات مجلد! بمجرد حذف ، لا يمكن استرداد الملفات.

(مأخوذ من "المسار طويل جدا؟ استخدم Robocopy" بواسطة BVLANGEN)

ملاحظة: أنا أدرك أن هذه الإجابة كانت هنا ، أقل من الناحية التعليمية. كيفية حذف ملف في ويندوز مع اسم ملف طويل جدا؟ [مكرر]

بينوا وأضاف:

قد تحتاج إلى المرور بهذه العملية أكثر من مرة للتخلص من جميع الملفات.


120
2018-03-03 16:45



شكرا يا سيدي جيد! هذا يجب أن يكون الجواب المقبول كما كل الآخرين لم تنجح أو مطلوب أداة طرف ثالث. :) - MickyD
هذا يعمل تماما ... لا حاجة لتركيب أي شيء (بقدر ما أعرف) وسريع. يجب أن يكون هذا هو الجواب المقبول! - ksumarine
هذا يحتفظ بعض (أو الكل) من شجرة الدليل ضمن "c: \ deletefolder" (الهدف dir). على أي حال ، حذف كل شيء في غمضة بالنسبة لي (أعتقد أن الملفات كانت صغيرة) ، وكان لدي فقط <del> "c: \ deletefolder" يدويا ، حصلت على dirs الطفل دون مشكلة. عملت مثل السحر. +1 ، يجب أن يكون الجواب المقبول! :) - rld.
rld ، ولكن هل كان "deletefolder" موجودًا من قبل؟ بخلاف ذلك ، أعتقد أنه يجب أن يكون فارغًا إذا كان دليلاً جديدًا. خلاف ذلك هو الفوضى. يمكنني إضافة خطوة أخيرة لـ "rmdir deletefolder". - hectorpal
عند التعامل مع دلائل متكررة للغاية ، يكون هذا الخيار أبطأ بكثير من 7zip. بعد الانتظار لمدة 20 دقيقة ، قيّمتهم وأدركت 7 كبح ، على الرغم من أن ذلك لا يعني أن التقدم كان أسرع بمعدل 50 مرة. - Andy Gauge


أعتقد أنني وجدت طريقة لحذف الأشياء منها cmd. في الأصل حاولت del الأمر ، لكن هذا لم ينجح. ثم تذكرت rmdir. القيام بما يلي:

rmdir /S /Q <dir>

يبدو أن عملت.


80
2017-12-03 19:24



لم يعمل لي. :( - Andrew Arnott
تذكر أن تسقط في كمد قبل محاولة تشغيل rmdir. - brianpeiris
بالنسبة لأولئك الذين لا يستطيعون استخدام هذا الحل لدي حل بديل يعمل معي (مع أسماء ملفات / مسارات طويلة جدًا): قم بنقل الملف (الملفات) / الدليل إلى C: \ لتقصير المسار ، ثم قم بحذفه من هناك. - Anders Sandberg Nordbø
من الممكن أن يكون لديك دلائل أن هذا الحل لن يعمل ، يمكن أن 7-Zip حذف. لقد حدث هذا لي. - SamStephens
هذا الحل هو الحصول على نتائج غير متناسقة. من فضلك ، لا تصوت. - hectorpal


كانت الأداة التي استخدمتها عندما أتيحت لي هذه المشكلة FastCopy. أنا اخترت حذف الكل من القائمة المنسدلة ، حدد الدليل الذي أردت حذفه ، ثم نقرت عليه حذف الكل.

FastCopy delete dialog screenshot

FastCopy هو محمول (لا يتطلب التثبيت) ، وهناك إصدارات 32 بت و 64 بت متوفرة.


29
2017-11-25 20:22



إذا كنت تبحث عن أداة سطر الأوامر ، فيمكنك استخدام أداة صغيرة قمت بنشرها على GitHub (github.com/epsitec/Tools-RecursiveDelete). - Pierre Arnaud
كان لدي مجموعة تم إنشاؤها بشكل متكرر من الملف / المجلد المتداخل. كان هذا هو الحل الوحيد الذي يعمل - Pierluigi
هذا العمل بالنسبة لي عندما ، فشلت الاشياء سطر الاوامر ، فشلت المحاولة 7zip. وحتى دعم مايكروسوفت كان مزعج! - Kit Ramos
نفس الشيء هنا - لقد بدأت نوعًا ما بحذف الملفات باستخدام 7zip ، ولكنها أيضًا تصرفت بشكل غريب جدًا واضطررت إلى Shift + Delere كل دليل عدة مرات متتالية لحذفه فعليًا ، ولكن بعد ذلك جربت هذه الأداة ، وعملت مثل السحر . أطلقها مرتين للتخلص من جميع الملفات. شكر! - Artanis
شكرا ، بالنسبة لي فضلا عن حل العمل الوحيد ، عظيم !!!! - tim


في سيغوين rm -rf يعمل بشكل جيد على مسارات طويلة!


24
2017-09-26 19:40



عملت سيغوين بالنسبة لي تماما! فقط فعلت -RM -RF وحصلت على جميع الملفات المحذوفة. - Ranhiru Cooray
عملت لي أيضا تحت غنو غنو ، الإصدار 4.1.10 (4) -ليس - rjzii
عمل رائع عند تشغيله من نافذة أوامر Git Bash. كنت قد قمت بتثبيت GitGui لذلك. - Albo Best


بدون تثبيت برامج إضافية يمكنك استخدامها subst الأمر مؤقتًا لإنشاء اسم مستعار إلى دليل مسمى طويل.

مثلا إذا كنت تريد حذف المجلد C:\Very long directory\that exceed\length limit\blah blah blah\abcde\folder to be deleted يمكنك استخدام الأمر

subst x: "C:\Very long directory\that exceed\length limit\blah blah blah\abcde"

ثم يمكنك حذفها X:\folder to be deleted في مستكشف Windows أو في موجه الأوامر بسهولة. لإزالة الاسم المستعار حرف محرك الأقراص المؤقت استخدم الأمر

subst x: /d

24
2017-10-28 06:09



جربت جميع الإجابات الأخرى (بما في ذلك الإجابات من أسئلة أخرى مماثلة) وكان هذا هو الوحيد الذي انتهى العمل بالنسبة لي. وكان أسرع بكثير. - glenneroo
هذا هو أفضل إجابة حتى الآن: ميزات بسيطة ، مدمجة ، لا تعبث جولة مع التسجيل. يجب أن تكون الإجابة المقبولة. - Kevin Roche
بسهولة أنظف وأكثر طريقة مباشرة ، شكرا لك كينيث. - Seth


ما عليك سوى الإسقاط من Powershell إلى أمر من خلال التشغيل أدناه:

Cmd /C "rmdir /S /Q <dir>" 

21
2018-04-22 16:00



"الدليل ليس فارغا". وجه الفتاة. يريد OP حذف مجلد غير فارغ. - leye0
كيف يختلف هذا عن إجابةherms؟ - bigbadmouse


حل Dentrasi هي أفضل طريقة بالنسبة لي ، لكني أردت نشر الخطوات المحددة في إجابة المستوى الأعلى.

  1. قم بتحميل وتثبيت أحدث بناء مستقر لـ 7ZIP.
  2. قم بتشغيل 7zip File Manager (7zfm.exe).
  3. في 7zip File Manager ، يمكنك التنقل حتى يمكنك رؤية اسم المجلد الذي تريد حذفه (أي أنك في المجلد الرئيسي).
  4. اضغط مع الاستمرار على زر Shift.
  5. انقر على "حذف"زر ، إما على لوحة المفاتيح أو في شريط أدوات 7zip File Manager ؛ تأكد من الاستمرار في الضغط على مفتاح Shift.
  6. انقر على "حسنا"زر ؛ تأكد من الاستمرار في الضغط على مفتاح Shift.

17
2018-06-25 14:19



محاولة لطيفة ولكن لا يزال العمل بالنسبة لي مع ك 10 من ملفات تكرارية. فقط rimraf عملت. - Julian Knight
JulianKnight: نعم ، هذا النهج لم ينتهي العمل بالنسبة لي بنسبة 100 ٪ من الوقت ، إما. أردت فقط أن أذكر ذلك لأنها كانت من بين العمليات الأكثر مباشرة ، وأنها عملت على الأقل جزءا من الوقت. الشيء الوحيد الذي وجدته قد عمل 100٪ من الوقت هو نهج البرنامج النصي Powershell + NTFSSecurity ، الذي وصفته أدناه. فشل IIRC rimraf عندما دعا ، وهو كيف دخلت هذه الفوضى في المقام الأول. انظر هذا الموضوع Node.js لمزيد من التفاصيل: github.com/nodejs/node-v0.x-archive/issues/... - Mass Dot Net
نعم ، ستكون هناك دائما مشاكل من هذا القبيل. في الواقع كان رمز تثبيت مكتبة Arduino IDE الذي قام به في (Java) ، أنا عن طريق الخطأ اخترت المجلد الذي يحتوي على المكتبات كمجلد لتثبيت مكتبة من وإلى خارجها ذهب! لقد قمت بقتل العملية بمجرد أن أدركت ولكن لدي 10 من مجلدات k (لعنة i7 / SSD!) إن الإصدار الرئيسي التالي من NPM يهدف إلى المساعدة في حل العديد من مشكلات التثبيت العميق للمكتبة للعقدة حيث يجب تلبية التبعيات من هيكل أكثر اتساقا. لا يزال أنا سعيد حقا شخص ما وضعني على rimraf - سهل ومجاني. - Julian Knight
JulianKnight - نعم ، قبل يوم أو يومين أخبرني أحدهم أن npm3 يجب أن يساعد في التخفيف من هذه المشاكل عن طريق منع تراكيب مجلدات التبعية المتداخلة. - Mass Dot Net
لا تعرف ما إذا كان "يمنع" ولكنه يعامل التبعيات المتداخلة بشكل أكثر تعقيدا بحيث إذا كان التطبيق الرئيسي الخاص بك يتطلب مكتبة X v1.0 والمكتبة Y تتطلب Z والتي تتطلب أيضا X v1.0 ، سيتم استخدام مكتبة المستوى الأعلى. سيقوم Z حالياً بتثبيت نسخته الخاصة من X. - Julian Knight