从Windows目录中删除100,000个文件的最佳方法是什么?

我有一个用户在一个目录中有更多的100,000个文件。 机器长时间无法使用,同时Explorer会填满内存,机器可能会崩溃。 有没有简单的方法来倾倒目录和内容? 我们尝试使用命令行deltree,这没有缝好多了。

DaveF

Extra –

我们有同样的用户(实际上是客户端)多次遇到这个问题。 一个程序在运行过程中会创build数千个临时文件。 如果程序正常工作,不要紧,因为它已经完成了,因为它们被放慢了速度。 但是每隔一段时间它就会死亡,留下一堆文件。 我们已经尝试使用rmdir和del等方法,它们比使用浏览器更快,但我们通常最终会遇到同样的问题。 分区受到破坏,存在一个无法解释的locking文件,某些文件存在权限问题,导致删除无法正常工作。 通常情况下,这些问题可以通过重新启动来解决,但在这种情况下,这是一个关键的系统,我们不能在生产时间。 在Unix上,你可以做一个rm -rf等等,这很快,而且通常没有真正的问题。 我们尝试过的所有命令行工具都不能可靠地工作。

顺便说一句 – 应用程序正在改变,但这将不会进入生产一段时间,我虽然这个问题可能是有趣的其他人。

更新 – 因为我们在系统上有MKS胡桃夹子(没有命令行实用程序),我们让程序员敲一个简单的rm。 这比del / deltree等快几个命令。我觉得很奇怪,没有这样一个简单的应用程序随时可用作为一个标准的Windows系统pipe理工具。

你可以使用rmdir

 rmdir /s /q FOLDERNAME 

/ s表示recursion删除,/ q表示“安静”模式。

我用这个问题与我pipe理的服务器。 完全跳过浏览器并使用命令提示符。 导航到该文件夹​​和“删除”

这样你可以避免GUI的开销(资源pipe理器是垃圾)和回收站。

除非您需要传统的16位应用程序,否则请尝试通过禁用短文件名称生成来提高性能。 这可能会对具有大量文件的目录操作产生重大影响。

 Regedt32 select: "HKLM\system\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameC reation"=1 

然后使用:

RMDIR / S / Q [drive:]path

删除其所有文件的目录。

如何将该临时文件夹移动到不同的驱动器/分区? 而不是删除所有的垃圾,你可以格式化驱动器(GUI或命令行)。 快速格式,这应该是相当快。

这是以前的post的组合

打开一个命令窗口:
File -> Run -> cmd

删除目录
rmdir /s /q FOLDERNAME

要么

删除一个文件的模式
cd \....\directory
del *.[something]

正如你在你的问题所指出的Windows资源pipe理器可以真正放慢速度。

看到你的更新后,我有我自己的
看看这个文件删除列表

我没有什么比del和rm好,但是即使需要很长时间也不会造成分区损坏。 locking的文件可能是因为创build它们的程序意外死亡。

有时,即使文件不能被删除,他们也可以被移动到另一个临时子目录。 我只是创build一个_todel子目录,并将其移动到那里。 如果我将整个目录移动一层,通常效果会更好,而不是文件本身。

除此之外,让删除更快的唯一方法是碎片整理硬盘。 临时解决方法可能是将此目录移动到samba共享中,或使用NTFS连接到便携式USB硬盘。 (一个小的分区会比使用整个硬盘更好更快)。 然后,您可以popup硬盘,并在另一台PC上快速格式化。

从删除文件损坏的分区? 这是磁盘的一个主要问题,不pipe被删除的文件数量是多less。

我会尝试命令行删除和删除尽可能多,直到你遇到一个被locking。 然后使用Process Explorerfind该文件打开的进程。 杀死该进程(如果可以的话),然后再次进行删除。 冲洗,重复:)

使用“Live”Linux CD重新启动rm -rf

有点hacky,但你可以创build一个脚本,将大块删除文件,我不知道的格式,但假设它是以字母az开头的文件,你可以做

 deltree /ya* deltree /yb* ... deltree /yz* 

用你的删除方法改变deltree的select。 可能会慢一点,但较less出错?

注意:你也可以尝试安装cygwin来获得像rm这样的命令,即使遇到一个文件的错误,它也可能会继续删除文件。

以上各种方法都有效。 如果你有一个拇指驱动器上加载了cygwin,你可以插入到你的本地USB,启动你的cygwin shell并运行RM命令,如上所述。 这是一个方便的方法来保持unix灵活性近在咫尺。

你也可以启动到恢复控制台,或者沿着这些线路。 这应该完全忽略了操作系统的任何奇怪的问题。

从linux机器挂载文件夹,并从那里做recursion删除。

# mount -t cifs //server/share /mnt/tobedeleted -o username=yourshareusername

# rm /mnt/tobedeleted/* -R

您甚至可以使用cron作业定期删除文件。

如果其他build议都没有工作,你有没有考虑加快你的I / O?

买更好的控制器,更快的磁盘..

或者我想知道,如果这些文件是临时的(如你所暗示的)和大小允许的话,你可以在这个盒子上添加额外的RAM(便宜的),并build立一个RAM磁盘?

最好的情况下,删除大量文件时性能不会降低。 最坏的情况下,重启会清除分区。

尝试剪切并粘贴到回收站,它应该绕过试图移动每一个文件。 不知道它将做什么来清空垃圾桶,因为那么它可能会遍历每个文件。

用SHIFT + DEL删除对速度有什么影响?

为什么不使用robocopy并镜像一个空目录?

只需创build一个空文件夹,然后使用:

 ROBOCOPY C:\ThisIsAnEmptyFolder C:\Users\SomeUser\Desktop\SomeFolderWithTempFiles /MIR