บังคับให้ลบไฟล์ด้วยชื่อที่ค่อนข้างใหญ่


62

ฉันใช้ Node.js เป็นประจำเพื่อจัดการการพึ่งพาสำหรับโปรแกรมที่ฉันเขียนไม่ใช่เรื่องใหญ่ วันนี้ฉันสิ้นสุดด้วยโครงสร้างโฟลเดอร์เช่นนี้ป้อนคำอธิบายรูปภาพที่นี่

พยายามที่จะลบไฟล์ใด ๆ ที่พบกับข้อผิดพลาดนี้:

ชื่อไฟล์ต้นฉบับมีขนาดใหญ่กว่าที่ระบบไฟล์รองรับ ลองย้ายไปยังตำแหน่งที่มีชื่อเส้นทางที่สั้นกว่าหรือลองเปลี่ยนชื่อเป็นชื่อที่สั้นกว่าก่อนที่จะพยายามดำเนินการนี้

มันมีอยู่แล้วใน C: \ ดังนั้นมันจะไม่สั้นลงเลย



คุณมีความคิดใด ๆ ว่าโครงสร้างโฟลเดอร์ของคุณมีขนาดใหญ่เท่าไรฉันเจอสถานการณ์เดียวกันเมื่อติดตั้งเสี้ยงฮึดฮัด
eran otzer

1
@eranotzer โดยใช้ npm
เซย์เรีย

ฉันไม่ได้ขึ้นต่อกันใน package.json ที่เขียนไม่ถูกต้อง?
eran otzer

@eranotzer ใช่ เนื่องจากวิธีการทำงานของ npm @ 2 ทุกการพึ่งพาซ้อนกันการพึ่งพาภายใน นั่นหมายความว่าเครือข่ายการพึ่งพาอาจยาวโดยพลการ npm @ 3 กำลังมองหาการปรับพฤติกรรมนี้
เซย์เรีย

คำตอบ:


75

robocopy.exeใช้เครื่องมือไมโครซอฟท์

  1. สร้างโฟลเดอร์ว่างใหม่เช่น c:\empty
  2. c:\myannoyingfolderแล้วคัดลอกโฟลเดอร์ที่ว่างเปล่าในโฟลเดอร์ที่มีชื่อไฟล์ยาวที่คุณกำลังพยายามที่จะลบเช่น ทำเช่นนี้ในพรอมต์คำสั่ง:

    robocopy / MIR c: \ empty c: \ myannoyingfolder


เนื่องจากนี่เป็นส่วนหนึ่งของเวิร์กโฟลว์ของฉันบ่อยพอฉันจึงหาวิธีรวมเข้ากับเชลล์ Windows ดูคำตอบของฉันด้านล่าง :)
toddmo

หมายเหตุ: คำสั่งนี้อาจใช้เวลาสองสามวินาทีหรือนาทีกว่าจะเสร็จสิ้น ดังนั้นไม่ต้องกังวลและปล่อยให้ทำสิ่งมหัศจรรย์ :-)
Adil Malik

ขอบคุณทำงานให้ฉัน ฉันต้องทำให้แน่ใจว่าฉันได้ฆ่ากระบวนการใด ๆ (IIS) ที่ยังคงค้างอยู่กับไฟล์ใดไฟล์หนึ่ง
เนียน Shinobi

เมื่อใดก็ตามที่ฉันพยายามเปิด robocopy.exe หน้าต่างจะกระพริบหนึ่งวินาทีจากนั้นไม่มีอะไรเกิดขึ้น กรุณาช่วย
Maulik Modi

29

เอาล่ะสมมติว่าคุณต้องการลบทรีD:\very\long\pathคุณไม่จำเป็นต้องใช้เครื่องมือใด ๆ เช่น Robocopy

  1. ไปที่ไดเรกทอรีรากของไดรฟ์ที่มีไดเรกทอรีซึ่งคุณไม่สามารถลบได้
  2. สร้างไดเรกทอรีด้วยชื่อตัวอักษรเดียวเช่น D:\a
  3. นำทางไปยังไดเรกทอรีที่คุณต้องการลบในกรณีนี้ D:\very\long\path
  4. เลือกทั้งหมด ( Ctrl+ A) และตัด ( Ctrl- X)
  5. นำทางไปยังโฟลเดอร์ที่คุณเพิ่งสร้างขึ้น
  6. วาง ( Ctrl- V)
  7. ตอนนี้เลื่อนขึ้นไปที่ไดเรกทอรีรากและลบโฟลเดอร์ชั่วคราวในกรณีนี้ D:\a
  8. จากนั้นย้อนกลับและลบไดเรกทอรีเดิม

2
นี่ไม่ได้ผลสำหรับฉันในการลองครั้งแรกสำหรับฉัน อย่างไรก็ตามหลังจากทำซ้ำขั้นตอนนี้อีกหลายระดับโฟลเดอร์ในฉันก็สามารถลบทุกอย่างได้
abaldwin99

1
ทางออกที่ดีทำงานได้อย่างไร้ที่ติ ง่ายและมีประสิทธิภาพขอขอบคุณ!
Caner Öncü

GREAT !! ทำงานเหมือนจับใจ !!! ไม่จำเป็นต้องใช้เครื่องมืออื่น ขอบคุณ!
Prasanth KC

วิธีนี้ใช้งานได้ดีและฉันจะเพิ่มจุดนี้ถ้าการเลือกไฟล์จากเส้นทางไม่ทำงานคุณสามารถเลือกโฟลเดอร์ที่อยู่ตรงกลางเส้นทางยาวแล้วย้ายโฟลเดอร์นั้นไปที่โฟลเดอร์ชั่วคราวแล้วลบ ทั้งในทำนองเดียวกัน
Narayana Nagireddi

4

ฉันเริ่มพิมพ์ปัญหานี้ขณะที่พยายามใช้คำสั่งมากมายรวมถึงdel /Fและrmdir /S(รวมถึงการกดปุ่ม Shift ค้างไว้ในขณะที่ลบเพื่อพยายามข้ามถังรีไซเคิล) ฉันคิดว่าrmdir /Sจริง ๆ แล้วลบไฟล์ทั้งหมดดังนั้นฉันจึงสามารถดำเนินการต่อด้วยการลบโฟลเดอร์ที่เป็นโหนดลีฟจากนั้นดำเนินการกับทรีสองสามโหนดต่อครั้ง ในที่สุดฉันก็ล้างมันทั้งหมด แต่นั่นไร้สาระ


4

คุณสามารถรวมฟังก์ชั่นนี้ลงใน windows shell คำตอบของการปรับปรุงต่อ Flo ของฉันนานเกินไปสำหรับความคิดเห็น

ฉันเพิ่มDeleteคำสั่งลงในเมนูบริบทของ Windows

ป้อนคำอธิบายรูปภาพที่นี่

delete.regไฟล์เพิ่มรายการรีจิสทรีที่จะเชื่อมโยงโฟลเดอร์ที่มีrobodelete.batไฟล์ชุด

delete.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\Delete]

[HKEY_CLASSES_ROOT\Directory\shell\Delete\command]
"Extended"=""
@="\"D:\\Documents\\robodelete.bat\" \"%1\""

robodelete.bat

mkdir c:\empty
robocopy /MIR c:\empty %1
rmdir %1
rmdir c:\empty

หมายเหตุ : คุณอาจต้องเปลี่ยนเส้นทางในไฟล์ทั้งสองตามการตั้งค่าของคุณ

คำเตือน : ไม่มีวิธีการยกเลิกคำสั่งนี้ มันไม่ได้ใช้ถังรีไซเคิลและไม่ขอให้ Y / N ยืนยันก่อนที่จะทำลายโฟลเดอร์ให้ดี!


ขอบคุณสำหรับคำเตือน ฉันต้องการสิ่งนี้ในเวิร์กโฟลว์ของฉันเช่นกัน แต่ฉันต้องการหลีกเลี่ยงการมีปุ่มนิวเคลียร์ในเมนูคลิกขวาของฉันที่ไม่มีการยืนยัน Y / N ถ้าฉันได้เวลาฉันจะทำการปรับแต่งและแนะนำการแก้ไข
abaldwin99

1
@ abaldwin99 แบบนี้อาจstackoverflow.com/a/1807318/1045881
toddmo

4

เครื่องมือบรรทัดคำสั่ง SuperDelete โอเพ่นซอร์ส ( GitHub ) ทำงานให้ฉันหลังจากตัวเลือกอื่น ๆ ล้มเหลว (Windows 10)


3

วิธีที่ดีที่สุดในการทำเช่นนี้คือการใช้ robocopy ฉันบันทึกไว้ในบล็อกส่วนตัวของฉันเพื่อให้คุณติดตาม:

http://clintboessen.blogspot.com.au/2014/05/how-to-delete-files-which-exceed-255.html


4
แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงค์อย่างเดียวอาจไม่ถูกต้องหากหน้าลิงค์ที่เชื่อมโยงนั้นเปลี่ยนแปลงหรือหายไป
Andrea

0

ในหลายกรณีการทำ CD ในไดเรกทอรีจากพรอมต์คำสั่งและการใช้ DEL จะทำงาน

ถ้าไม่คุณจะต้องใช้ชื่อต้นไม้ในไดเรกทอรีต้นไม้: เปลี่ยนชื่อโฟลเดอร์ระดับต่ำสุดเป็นชื่อที่สั้นกว่า (เช่น "a") จากนั้นชื่อโฟลเดอร์ถัดไปที่สูงขึ้นไปเรื่อย ๆ จนกว่าเส้นทางทั้งหมดจะสั้นพอ ด้วยการทำงานจากล่างขึ้นบนคุณจะต้องจัดการชื่อที่มีเส้นทางแบบสั้นกว่าไฟล์สุดท้ายเสมอ


0
  • เปิดพร้อมท์คำสั่งการจัดการ
  • net use z: c:\path
  • del z:\*.*

ปรับแต่งตาม Z: เป็นเพียงอักษรระบุไดรฟ์เพื่อทำแผนที่เส้นทางที่ละเมิดไป คำสั่งลบล่าสุดนั้นจะลบไดเรกทอรี WHOLE ที่คุณแมปไว้ดังนั้นให้เจาะจงมากขึ้นตามต้องการ


2
นี่เป็นสิ่งที่อันตรายมากสำหรับผู้ใช้ที่ไม่ใช้พลังงาน! มีความเป็นไปได้ที่จะล้างไดรฟ์หากทำผิด
Rudi Strydom

ตกลง 100% ดำเนินการด้วยความระมัดระวังอย่างแน่นอนในอันนี้
แบรดลีย์ Forney

0

วิธีที่ดีคือการมีLinux ที่สามารถบู๊ตได้บน pendriveและลบไฟล์โดยไม่มีปัญหาจากระบบปฏิบัติการซีดีสด


-1

ฉันมีปัญหาเดียวกันและฉันพบว่าตัวเองเพียงเปลี่ยนชื่อโฟลเดอร์ผู้ปกครองให้น้อยที่สุด อดีต ถ้าโฟลเดอร์ของเราใน " D " ไดรฟ์เหมือนD: // โฟลเดอร์ / Undelete_Folder สิ่งเดียวที่คุณต้องทำคือเปลี่ยนชื่อพาเรนต์ชื่อโฟลเดอร์ให้เล็กที่สุดคุณสามารถเปลี่ยนชื่อเป็น " a " ตำแหน่งของคุณจะเป็นD: // a / Undelete_folde r แล้วลบโฟลเดอร์หลัก


สิ่งนี้ไม่เพียง แต่จะใช้งานได้ไม่ได้ (ถ้ายังใหญ่กว่าหรือลดลงด้วย) แต่ฉันพูดอย่างชัดเจนว่าโฟลเดอร์ของฉันอยู่ในรูทของไดรฟ์
เซย์เรีย

-2

ถ้าทุกอย่างอื่นล้มเหลว

ไปที่ไดเรกทอรีสุดท้ายในสตริง ตัดไฟล์การวางกลับเข้าไปในไฟล์ที่ 4 หรือ 5 ใน String จากนั้น [Shift] + [Delete] ควรทำเคล็ดลับ

ฉันไม่เชื่อที่จะเรียกใช้ข้างต้นในพรอมต์คำสั่งที่ยกระดับเนื่องจากฉันลบไฟล์ Test Restore ออกจากข้อมูลสำรอง DPM

หวังว่านี่จะช่วยได้


สิ่งนี้อาจไม่ทำงานเพราะพวกเขาจะยังคงมีเส้นทางไฟล์ที่ยาวสำหรับการดำเนินการตัด
เซย์เรีย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.