我有一个用户在一个目录中有更多的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