问题是,对目录的任何修改都会无限期地locking资源pipe理器,尽pipeSamba对其他目录的访问仍然有效。 我试过在本地和Samba上移动文件。
即使枚举目录以获取文件列表也会无限期地locking计算机。
我尝试使用Python的win32file.FindFilesIterator
迭代文件,但也挂起。
我的想法是根据时间戳将每个文件移动到不同的目录(位于我们正在处理的目录之上的目录中),以便每个目录中最多有一千个左右的文件…但是我甚至无法枚举这些文件,这是一个不起眼的东西。
如果我不得不放弃,只是努力的目录我愿意这样做,但一个标准的删除也无限期挂起。
我已经设置了这两个参数来提高速度,他们也没有帮助这个问题:
R:\>fsutil behavior query disablelastaccess disablelastaccess = 1 R:\>fsutil behavior query disable8dot3 disable8dot3 = 1
这些都是连续的图像,会遇到8.3错误的文件名,因此一个目录中的许多类似命名的文件可能需要很长时间来计算8.3文件名。 据我所知,即使disable8dot3启用后,这些数据仍然存储在文件系统中,所以它可能仍然是造成这个问题的原因。
有任何想法吗?
根据文件的添加方式以及文件夹的分散程度,最快的方法甚至可能是移走你想要保留的文件和核心分区!
我不知道它是否会起作用,既不是对你来说是实用的方法,但是把硬盘放到Linux计算机上并用Linux试一试呢?
(有可下载的可启动Live CD – 你甚至不需要物理移动硬盘)。
你不应该做两件事:
正在发生的事情是,资源pipe理器正在访问这些文件中的每一个文件,以获得将会或可能在资源pipe理器界面中显示的信息。 此外,如果您有访问防病毒扫描的function(如果没有,为什么不),每个文件都将被扫描,即使只是确定它是否是应该扫描的types之一。 所有这些处理这么多文件需要很长时间。
短期解决scheme – 改为使用命令行或某种forms的脚本。
长期解决scheme – 制定一个合理的scheme,以确保您永远不会有超过几千个文件在任何一个文件夹。
你可以学习一点啊或PHP。 ahk会更容易学习, http: //webchat.freenode.net/?channels=#ahk上的某个人可能会愿意帮助你把东西弄到一起。
quick ex. from when I needed to do this...
Loop, C:\Users\PC\Web Sites\Folderwithtomanyfiles\*.htm, , 1 ; Recurse into subfolders. { Match := Match1 := name := name1 := M := File := total++ ;the names of my files were each 7digits with some extra info I didn't want to share here so... RegExMatch(A_LoopFileFullPath, "Folderwithtomanyfiles\\(\d{7}.*?htm)", name) RegExMatch(A_LoopFileFullPath, "Folderwithtomanyfiles\\(\d{7})", Match) StringTrimLeft, Ma, Match1, 6 M .= Ma . "\" StringTrimLeft, Ma, Match1, 5 M .= Ma . "\" StringTrimLeft, Ma, Match1, 4 M .= Ma . "\" StringTrimLeft, Ma, Match1, 3 M .= Ma . "\" StringTrimLeft, Ma, Match1, 2 M .= Ma . "\" StringTrimLeft, Ma, Match1, 1 M .= Ma FileCreateDir, C:\Users\PC\Web Sites\fewer file names\%M% FileAppend, %File%, C:\Users\PC\Web Sites\fewer file names\%M%\%name1% created++ } MsgBox Created %created% out of %total% } ;example of path ... ;"C:\Users\PC\Web Sites\fewer file names\3\33\233\5233\35233\435233\0435233.htm ;turns out I should have put a few thousand files in each folder but oh well, hope the example helps.
尝试使用PowerShell。 使用Move-Item Cmdlet
HTH
总是有cmd.exe
和del
命令。
您将需要重新启动FSUTIL更改才能生效,以防万一您没有。
禁用8.3名称的NTFS函数(添加,删除,search)的复杂性的一般顺序是O(日志N),所以一旦事情进入这种状态,几乎任何事情都将花费相同的时间长度。
如果您在系统上有任何AV激活,请在解决此问题时将其closures。
出于好奇,如果你用Robocopy之类的东西把文件复制出来,你会获得更好的性能吗? 我怀疑它不会有太大的区别,但它应该花费一半的删除时间(只有search目录涉及不是search,然后删除条目)。 不过最终还是会有删除原件的问题。
使用/ mov选项的robocopy
http://technet.microsoft.com/en-us/library/cc733145.aspx
例如,我有一个文件夹中有1.2米的电子邮件文件,这将挂起浏览器。 这些文件是从date开始命名的,因此我为每年的每个月创build了文件夹,然后在文件名中使用了robocopy过滤date。
robocopy e:\ sent-old \ e:\ sentmail \ 2013-4 201304 *。* / mov