การลบไฟล์จำนวนมากใน Windows ช้า


34

ฉันมีกล่อง Windows XP พร้อมดิสก์ NTFS และการลบไฟล์จำนวนมากช้ามาก หากฉันเลือกโฟลเดอร์ที่มีไฟล์จำนวนมากในต้นไม้ของโฟลเดอร์และลบ (ใช้ shift-del เพื่อบันทึกถังรีไซเคิล) ต้องใช้เวลาที่ดูเหมือนว่าจะเป็นสัดส่วนโดยตรงกับจำนวนไฟล์ภายในโฟลเดอร์ก่อนที่จะ ดึงกล่องยืนยันขึ้นมา จากนั้นใช้เวลานานยิ่งขึ้นในการลบแต่ละไฟล์ในโฟลเดอร์

มีวิธีการลบโฟลเดอร์ใน Windows หรือไม่โดยไม่คำนึงถึงเวลากับสัดส่วนของจำนวนไฟล์ภายในไฟล์?


2
และนั่นเป็นสิ่งที่ซ้ำกันของsuperuser.com/questions/19762/mass-deleting-files-in-windows
Hugo

คำตอบ:


60

มีวิธีการลบโฟลเดอร์ใน Windows หรือไม่และไม่ได้ใช้เวลาให้พอดีกับจำนวนไฟล์ภายในนั้น?

ฉันไม่คิดอย่างนั้น แต่วิธีการบางอย่างเร็วกว่าวิธีอื่นอย่างชัดเจน

วิธีที่แย่ที่สุดคือส่งไปที่ถังรีไซเคิล: คุณยังต้องลบทิ้ง ถัดไปที่แย่ที่สุดคือ shift + delete ด้วย Windows Explorer: ทำให้เสียเวลาในการตรวจสอบเนื้อหาก่อนเริ่มลบอะไร

สิ่งที่ดีที่สุดถัดไปคือการใช้rmdir /s/q foldernameจากบรรทัดคำสั่ง del /f/s/q foldernameก็ดีเหมือนกัน แต่มันทิ้งไว้ข้างหลังโครงสร้างไดเรกทอรี

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

del /f/s/q foldername > nul
rmdir /s/q foldername

ซึ่งเร็วกว่า rmdir เดียวเกือบสามเท่าโดยอ้างอิงจากการทดสอบเวลาด้วยดิสก์เข้ารหัสของ Windows XP ลบไฟล์ ~ 30GB / 1,000,000 / 15,000 โฟลเดอร์: rmdirใช้เวลา 2.5 ชั่วโมงdel+rmdirใช้เวลา ~ 53 นาที ข้อมูลเพิ่มเติมที่นี่

นี่เป็นภารกิจปกติสำหรับฉันดังนั้นฉันมักจะย้ายสิ่งที่ฉันต้องการลบไปที่ C: \ stufftodelete และมีdel+rmdirคำสั่งเหล่านั้นในไฟล์แบตช์ deletestuff.bat นี่เป็นกำหนดการวิ่งในตอนกลางคืน แต่บางครั้งฉันก็ต้องวิ่งในตอนกลางวันเพื่อให้เร็วขึ้น



1
Windows กำลังทำให้ฉันรอสแกนหลายพันไฟล์จากการสำรองข้อมูล SDK เก่า อาจใช้เวลาอย่างน้อยหนึ่งชั่วโมงซึ่งอาจใช้เวลา 10 นาทีในกรณีของฉัน ฉันใส่มันลงในไฟล์ bat เพื่อใช้ซ้ำ: gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
Knossos

ดูคำตอบเดียวกันกับข้อมูลเพิ่มเติมได้ที่superuser.com/questions/19762/mass-deleting-files-in-windows
Warlike Chimpanzee

1

มีวิธีการลบโฟลเดอร์ใน Windows หรือไม่โดยไม่คำนึงถึงเวลากับสัดส่วนของจำนวนไฟล์ภายในไฟล์?

ใช่จัดรูปแบบพาร์ติชัน ฉันแปลกใจเล็กน้อยที่ไม่มีใครแนะนำว่าใน 9 ปีที่แล้ว

มันค่อนข้างรุนแรง แต่ถ้าคุณคิดว่าจะทำเช่นนี้บ่อยครั้งกับโฟลเดอร์ใดโฟลเดอร์หนึ่งมันอาจคุ้มค่าที่จะสร้างพาร์ติชันแยกต่างหากสำหรับมัน


ถ้ามันรุนแรงเกินไปคำตอบอื่น ๆ ก็คือความหวังเดียวของคุณ มีคำอธิบายที่ดีคือเหตุผลในServerFault มันใช้สำหรับระบบไฟล์ linux และ XFS แต่ใช้ตรรกะเดียวกันกับที่นี่ คุณไม่สามารถปรับปรุงฟังก์ชัน build-in OS ได้มากนัก

อย่างไรก็ตามหากคุณทราบเส้นทางไปยังไฟล์ทั้งหมดที่คุณต้องการลบคุณสามารถบันทึกการโทรที่แสดงรายการเนื้อหาของไดเรกทอรีและลบการโทรโดยตรง ยังคงสัดส่วนกับจำนวนไฟล์แม้ว่า

โดยส่วนตัวฉันชอบรายงานความคืบหน้าบางส่วนเพื่อให้แน่ใจว่าโปรแกรมไม่ได้ตาย ฉันชอบลบข้อมูลผ่าน python ตัวอย่างเช่นหากไฟล์ทั้งหมดอยู่ในไดเรกทอรีเดียวโดยไม่มีไดเรกทอรีย่อย:

import tqdm
import sys
import os

location = sys.argv[1]
directory = os.fsencode(location)

with os.scandir(directory) as it:
    for dir_entry in tqdm.tqdm(it):
        try:
            os.remove(dir_entry.path)
        except OSError:
            pass  # was not a file

สิ่งนี้จะลบประมาณ 250 ไฟล์ / s ใน SEAGATE ST3250620NS ของฉันอายุ 12 ปี ฉันคิดว่ามันจะเร็วกว่าบนไดรฟ์ของคุณ

อย่างไรก็ตาม ณ จุดนี้มันเป็นเพียงการเพิ่มประสิทธิภาพขนาดเล็กดังนั้นจะไม่ทำอะไรมากเว้นแต่คุณจะมีไฟล์นับล้านไฟล์ในไดเรกทอรีเดียว (เช่นฉันฮ่า ๆ ฉันทำอะไรลงไป D :)



0

ตรวจสอบให้แน่ใจว่าคุณไม่ได้สำรองไฟล์ไปยังคลาวด์และพยายามลบไฟล์ในเวลาเดียวกัน!

ด้วยไฟล์โซลูชันการสำรองข้อมูลบนระบบคลาวด์จำนวนมากจะถูกล็อคในขณะที่กำลังทำการสำรองข้อมูลจากนั้นคุณต้องรอการสำรองข้อมูล

หากคุณประสบปัญหานี้ด้วยการบอกไดเรกทอรีชั่วคราว (หรือบางสิ่งที่ไม่จำเป็นต้องสำรองข้อมูล) ตรวจสอบให้แน่ใจว่าไม่ได้เลือกไดเรกทอรีชั่วคราวในชุดข้อมูลสำรองของคุณ


0

ฉันพบว่าโฟลเดอร์ที่มีไดเรกทอรีหลายชั้นมักจะชะลอความสามารถของ Window ในการลบออกอย่างรวดเร็ว ฉันกำลังทำงานในโครงการที่ใช้เวลา 5 ระดับเพื่อไปยังโฟลเดอร์ node_modules ซึ่งเป็นสัตว์ร้ายที่จะลบเสมอแม้ว่าจะมี

del /f/s/q foldername > nul
rmdir /s/q foldername

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

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

มันเป็นกระบวนการที่ต้องทำด้วยตัวเองและน่าจะถูกสคริปต์ด้วยความสำเร็จ แต่สิ่งที่ได้ผลสำหรับฉัน


0

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

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

ตัวอย่างการใช้งาน:

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%

-2

คุณลองใช้ command prompt

rmdir /s /q foldername

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


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

ผิด ... ฉันทำงานกับโฟลเดอร์ขนาดใหญ่อย่างต่อเนื่อง (ส่วนใหญ่เป็นเซิร์ฟเวอร์ win2k) และใช้ TotalCommander เพื่อย้าย / คัดลอก / ลบข้อมูล ฉันสังเกตเห็นว่าถ้าฉันลด TC หรือทำให้หน้าต่างแอปพลิเคชันอื่นอยู่ด้านบนของสิ่งที่ TC ได้รับทำได้เร็วขึ้นอย่างน้อย 50% TC ยังคงทาสีสิ่ง visal แต่ทุกอย่างจะถูกละเว้นใน compositing ...
nejc

6
คอมพิวเตอร์ของคุณช้ามากที่การทำงานของ GUI ส่งผลกระทบต่อประสิทธิภาพของดิสก์ I / O หรือไม่ หรือ TotalCommander เป็นรหัสที่ไม่ดีอย่างไม่น่าเชื่อ? ดิสก์นั้นช้ากว่าซีพียูแรมและการ์ดวิดีโอหลายร้อยหรือหลายพันเท่า หากกราฟิกของคุณช้าลงดิสก์เขียนว่าคุณมีปัญหาที่สำคัญ
Mr. Shiny และ New 安宇

1
คำถามมี "ไม่มีเวลาสัดส่วนกับจำนวนไฟล์" ด้วยเหตุผล ฉันไม่ได้มองหา 50% เร็วขึ้น
Sindri Traustason

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