今天的文章比较短,但从实际上解决了大多数命令行Shell和Windows UI的问题。此问题是,“为什么我不能通过Windows资源管理器来查看文件夹大小了呢?”最简单的回答便是,“微软的设计使然”。用户其实可以通过将鼠标悬停在Windows资源管理器上的方式来查看并获得文件夹大小(如下图):
禁用此项目主要原因是微软从操作系统性能方面考虑,在多数服务器级Windows上默认禁用此查看功能。因为每当用户将鼠标悬停在Windows资源管理器查看文件夹大小时,操作系统会将当前文件夹及所有子文件夹中的内容按文件夹结构进行递归扫描,并将扫描所得的文件大小结果求和,以便得出整个当前文件夹大小。其实这样的设计和处理方式必然会带来非常大的CPU开销,试想一个用户嵌套了上千个文件夹,并在不同的子文件夹中有成百上千的文件,如果要查看主文件夹大小会带来多么大的CPU开销和运算时间。如果考虑更恶劣的情况,当某个用户通过网络方式访问并预览文件夹大小时,又会是什么样的情形?
然而微软仍然通过用户自定义的方式提供了这个选项:
在某些情况下(复杂多层次嵌套文件夹结构),在本地操作系统上关闭此选项可以提高操作系统性能。当客户端计算机通过Lan/Wan来预览复杂文件夹结构时,将会遇到严重的延迟。另外在客户端有一个NoRemoteRecursiveEvents注册表值(HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer)可供用户配置使用。当此值设置为1时,服务器端子文件夹结构变化的通知会被禁用,但主文件夹(1级根)的更改和变化通知仍会发送给客户端。
其它资源:
http://support.microsoft.com/kb/885189/en-us
http://support.microsoft.com/kb/831129/en-us